diff options
author | Slávek Banko <slavek.banko@axis.cz> | 2013-08-21 19:16:24 +0200 |
---|---|---|
committer | Slávek Banko <slavek.banko@axis.cz> | 2013-08-21 19:16:24 +0200 |
commit | 44c23c4159d9195718a7e80e005cc5c12c7001ce (patch) | |
tree | 65ab21fde66beb0aeee124631e0f65b0fb8c18bd /src/swordutils.cpp | |
download | tdeio-sword-44c23c4159d9195718a7e80e005cc5c12c7001ce.tar.gz tdeio-sword-44c23c4159d9195718a7e80e005cc5c12c7001ce.zip |
Initial import of kio-sword 0.3
Diffstat (limited to 'src/swordutils.cpp')
-rw-r--r-- | src/swordutils.cpp | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/src/swordutils.cpp b/src/swordutils.cpp new file mode 100644 index 0000000..8b5960c --- /dev/null +++ b/src/swordutils.cpp @@ -0,0 +1,86 @@ +/*************************************************************************** + File: swordutils-.cpp + Project: Kio-Sword -- An ioslave for SWORD and KDE + Copyright: Copyright (C) 2004-2005 Luke Plant + ***************************************************************************/ + +/*************************************************************************** + * 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., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "swordutils.h" +#include <versekey.h> + +using namespace sword; +using sword::VerseKey; +using sword::SWModule; + +namespace KioSword { + + /** \brief Return true if the verse key specifies an entire book of the Bible + * + */ + bool isEntireBook(const VerseKey *vk) { + if (vk->LowerBound().Chapter() == 1 && + vk->LowerBound().Verse() == 1) { + // lower bound is first verse in book + VerseKey cp(vk->UpperBound()); + cp++; + if (cp._compare(vk->UpperBound()) == 0 || + cp.Error() || + cp.Book() != vk->UpperBound().Book()) { + // reached end of module, or + // another book + return true; + } + } + return false; + } + + + /** Checks if the VerseKey represents a single chapter + * + */ + bool isSingleChapter(const VerseKey *vk) { + if (!vk) return false; + + if (vk->LowerBound().Verse() == 1 && + vk->LowerBound().Chapter() == vk->UpperBound().Chapter()) { + VerseKey cp(vk->UpperBound()); + cp++; + if (cp._compare(vk->UpperBound()) == 0 || + cp.Error() || + cp.Chapter() != vk->UpperBound().Chapter()) { + // either reached end of module, or + // another chapter + return true; + } + } + return false; + } + + + /** Gets the text direction of the given module, used for + * inserting into HTML + * + * @param module Module to test + * @return "ltr" or "rtl" + */ + const char* textDirection(SWModule* module) + { + return (module->Direction(-1) == (int)sword::DIRECTION_LTR ? "ltr" : "rtl"); + } +} |