Freda: the free ebook reader

Freda is a free, advertising-supported program for reading electronic books (ebooks) on Windows 10 PC, Tablet and Mobile.

Features:

Get it from Microsoft

Quick Start

When you first start Freda, you will see a table containing six classic books. To open one of them, touch the book image. The screen will go black and the book will start to download. After a few moments, the book will open, and the first page (generally a title page, showing an image) will appear. You can move to the next page by tapping (or mouse-clicking) at the right hand side of the page.

You will see a page number indicator, "-/-" at the bottom of the page (the -/- symbols mean that Freda has not finished scanning though the book, and so it doesn't yet know how many pages there are). Coloured moving dots will appear at the top of the screen as long as the scanning process continues (maybe for several minutes), but you can begin reading right away.

For more information, read on ...

Freda Screens

First, a word on screen layouts. Freda is a Universal Windows Platform application, which means that it adjusts the size and positioning of items on the screen, according to how large its screen is. On small screens (i.e. on mobile devices or small tablets, or if its window is resized to a small size) Freda's main screen will show only one section (bookshelf, sources list or current book) at a time - whereas when the screen is large, all the sections are shown together on the main page. The screenshots in this manual were taken with a large screen.

There are two main parts that make up Freda - the 'Chooser' screen which you use to select a book, and the 'Reader' screen that you use to read it. Within each of these screens, you have a number of sections for accessing the different features.

When you open a book, Freda will switch to the Reader screen.

Whatever screen you are on, the 'Back' button will always take you back to the previous screen (on mobile devices, this is the built in button at the bottom left of the screen; on tablet and desktop PCs it is the back-arrrow button shown in the application title bar).

Chooser

The Chooser screen consists of a view, showing recent books, a list of different places where you can find books (sources), details of the most recently opened book, and a list of additional tools (which appears as a menu panel on the left, when you tap the 'hamburger button at top left).

Chooser - Bookshelf

Chooser - Bookshelf

The bookshelf shows a table of recently-opened books (when you first run Freda, it is pre-populated with a list of classics from Feedbooks). To open a book, tap on the book tile. Freda will then switch to the Reader screen. If the book was not already in the phone's memory, Freda will download it. This means that the first time you open a book, you must have network connectivity, but after that the book will be held in the phone's memory, so you will not need network access to continue reading it. Freda will keep up to a thousand books downloaded; after that it will delete the least recently opened books, so you will have to download then again.

If you prefer to see your bookshelf as a list of books, tap the 'list' button in the command bar.

To filter or sort the contents of your bookshelf, tap the 'filter' button in the command bar, and enter search text for title and/or author, and tap the 'sort by' button to specify the order in which books should be shown.

When the bookshelf is in 'list' mode, you get a richer set of options for sorting and filtering books (by tag, by series, and so forth). In those views, you will see 'section header' elements (grouping all books belonging to the 'science fiction' group, or all authors beginning 'A'). To see the list of available groups, tap on one of the 'section header' elements.

Right-clicking with a mouse or holding (with pen or finger) on a book will display a menu with options to open it, to view or edit book data (including title and author), to flag it as a favourite, to pin it to your start menu, or to delete it.

Chooser - Sources

Chooser - Sources

The next section of the main chooser screen is the list of book sources. To open one of the book sources, tap on it. A new page will be shown, where you can navigate around the source and select a book to download.

The list of sources has command bar buttons allowing you to add a new source, or to filter book sources (normally, you don't see sources that have been flagged as 'hidden'; to make these sources visible, tap the 'filter' button).

Chooser - OPDS Catalogs, DropBox and OneDrive

Source - Catalogs

These screens allow you to find and download books from OneDrive, DropBox and popular on-line book catalogs, such as Feedbooks, Smashwords and Gutenberg (and your own Calibre catalog, if you have set this up). The screen shows a combination of 'catalog' links (which look like folders) and 'book' links (which look like thumbnail images, showing book covers or a book icon). Tapping a 'catalog link' button takes you to another place in the catalog (for example, 'Recent' may take you to a list of recently-added books). Tapping a 'book link' tile will download or open a book from the catalog.

Above the list of links, you will see buttons, for moving around within the catalog:

Depending where you are in the catalog, some of these buttons may be absent (for instance, the 'next' and 'previous' pages will only appear if you are looking at a multi-page list in an OPDS catalog, such as 'all authors beginning 'A'').

The 'search' button will be available only for OPDS catalogs with a 'search url' has been set up for this catalog. You can set up this and other details by using the 'edit' button in the command bar.

The 'login' button allows you to set up access details for OneDrive and DropBox sources, and to set a user name and password for OPDS catalogs that use HTTP/Digest authentication (Calibre does this). Other catalogs may use different authentication schemes (cookie-based, for example); Freda cannot log on to these catalogs, so you may need to use your web browser to download books from this type of catalog.

The command bar also includes a 'close' button which will close the source screen and return to the main screen, and a multi-select button which puts the display into a mode where you can select many books at once. When you tap this button, Freda will automatically select every book that has not already been downloaded; you will see command bar buttons for selecting all books on the page, selecting no books, and downloading all the selected books.

Chooser - Book

Chooser - Book

The 'books' section shows you information about the currently selected book. Tap the cover image to start reading this book, or use buttons in the command bar to delete the book, to download it, or to edit the book information. There is also a 'tags' item on this screen; tap on this to create, add, and remove 'tags' for your books. You can use these tags to group book (by genre, subject, whatever). Freda understands the tagging scheme used by Calibre, and by Feedbooks; when you open books from these sources, tags are automatically imported.

Note: you can also replace the book cover image. To do this, tap the 'edit' button, and then tap the book cover image on the edit screen. You will be invited to choose a replacement cover image.

Chooser - Tools

Chooser - Tools

By tapping the 'hamburger' button at the top left of the screen, you can display the 'tools' menu, which shows links to the bookshelf, sources list and current book, plus a list of additional features within the program:

  1. support will display a screen that you can use to access documentaion and release notes, clear settings, save the log file, or email a request for help.
  2. feedback offers links that you can use to share book recommendations with friends, send us suggestions for improvements to Freda, etc.
  3. settings takes you to the program's settings screen
  4. backup and restore allows you to make (or restore) a backup copy of your bookshelf and sources. The backup will contain details of all the book sources you have set up, and it will contain information about all the books you have downloaded (title, author, URL the book came from ... ). It will not include the books files themselves - so after restoring from a backup file, you may find you need to download the book again before you can read it.

Reader Screen

Reader

The Reader screen shows the text of the book you are reading. While a book is opening, it will show a row of dots at the top of the screen; as soon as Freda has some text to show you, the text will come up on screen. Meanwhile, Freda will continue to download and prepare other sections of the book. EPUB books are broken into chapters, and Freda takes advantage of this when loading books, by quickly loading whichever chapter you need to see, and putting it on-screen just as soon as it is ready. The program will carry on with loading all the other chapters as a 'background' task, but you can begin reading while it does this. Until book loading is complete, you may find that screen movements are jerky and not very responsive, however.

To page forward or back, tap at the edge of the screen. Using the Settings screen, you can customise gestures for changing pages (for example, making a swipe gesture change page, rather than selecting text).

A menu of actions is available, and further actions and controls are available in control bars that appear top and bottom of the screen. When you select text, the menu will pop up to ask you what you want to do with it (unless you have 'docked' the actions control bar at the top of the screen - see below). You can use the menu to apply a highlight colour or bookmark, or to look up text (in a dictionary, on the internet, in Bing Translate, or in the book that is open), or to start reading aloud, or to open the settings screen, or to open the control bars.

Reader Actions Popup

When the control bars are displayed, they contain (in the corner) a 'pin' button. Tap this button to 'dock' the menu to the screen, so it is always visible while you are reading.

When the menu is in docked mode, actions for highlighting, bookmarking and searching text can work differently. Set your preferred action by tapping the top left button. For instance, if the 'highlight' function is toggled, then whenever you select some text, the text is immediately highlighted in your chosen colour.

Reader Actions Docked

In undocked (popup) mode, you apply a highlight by first selecting the text, then (when the menu pops up) tapping the 'highlight' button. To change the colour of the highlighter, right mouse click (or tap-and-hold) the coloured box on the menu. Once you have applied the highlight to some text, you can change the highlight by tapping on it; a dialog box will appear, offering the option to change the colour of the highlight or to delete it. Applying a bookmark works in a similar way.

This means that if you want to use the same function every time that you select some text, you can do so by leaving the menu docked, with your chosen function toggled. If you want to always choose what to do with selected text, leave the menu undocked, or leave it docked but with the default action set to 'menu'.

Reader - Control Bars

A center-tap-and-hold while reading book text will always display the action menu and all the control bars. You can dismiss all the menus and controls by tapping on background screen area, or using the 'back' button.

Reader Actions Undocked

Settings

Settings

The Settings screen allows you to customise various program settings, controlling appearance and behaviour of the program.

To modify a setting on this screen, tap on the setting text; this will display some explanatory text and a control that you can use to modify the setting. Modified settings are shown with a '*' next to them. Once you have made all the changes you wish, you can apply the settings by tapping the 'back' hardware button or the 'ok' button; to revert to the previous settings, use the 'undo' button.

Text Appearance

These settings are used to modify the appearance of text on the screen.

Ink (Foreground) Foreground colour for text.

Paper (Background) Background colour for text.

Link ink Foreground colour for link (href) text.

Brightness the brightness of displayed text (10=darkest, 100=lightest)

Font The name of the font that Freda will use for book text.

Font size The font size that Freda will use for regular text (large text will be displayed 3 points larger).

Read in full screen mode If 'yes', Freda will attempt to enter full screen mode for reading book text (so that no 'chrome' will appear on the screen).

Page change motion Controls the way that page changes are animated.

Layout

Line spacing The spacing between lines. 1 gives the usual appearance.

Word spacing The spacing between words. 0.8 is a popular choice.

Page Number Style The value (none) means that no page numbers will be shown. Other values will show a page number at the foot of each page: 'page' means the page number; 'chapter+page' will show chapter number and page-within-chapter; 'percent' will show what percentage of the book has been read so far.

Border The amount of border (in pixels) area that will be left blank around the edge of the page.

Hyphenation If set, long words will be broken up by hyphens, so they appear across multiple lines when this is necessary for the page layout. If not set, words will never be broken up by hyphens. Note: when upgrading from an earlier version of Freda, you may find that this setting does not work on books that are already in the bookshelf. If you want it to work for such books, use the 'delete temporary files' button on the 'support' tab of the chooser screen.

Force alignment If set to any value but 'none', this setting will force the all text to be aligned as indicated, regardless of the formatting instructions provided by the book itself.

Force indent If set, the first line of each paragraph will be indented, regardless of the formatting instructions provided by the book itself.

Line break after para If set, a line break will be added after every after paragraph.

Remove blank lines If set, Freda will suppress consecutive blank lines in the book (any number of blank lines will be shown as a single blank line). If you've set this option and are still seeing big vertical gaps, try reducing the 'Max Margin' setting, as the gap may be a margin rather than a blank line.

Max Margin Sets a scaling factor that will make margin sizes smaller or larger. Note, it won't create a margin for you, if the book itself doesn't specify a margin in its style sheet(s).

Text columns (landscape) Number of text columns on the page, in landscape mode

Text columns (portrait) Text columns (landscape) Number of text columns on the page, in portrait mode.

Smart para breaks in TXT files If not set, Freda will assume that every line in a TXT file is meant to be a separate paragraph; if set, Freda will concatenate lines that (based on the absence of '.' and suchlike punctuation marks) seem to belong in a single sentence. This option is not available in the Chinese version of Freda, because it doesn't work well with Chinese punctuation.

Advanced

Password If you want to set a password for Freda, tap this setting, enter the new password into the two 'new password' boxes and then tap the 'change password' button. To get rid of the password, you can enter blank text into the password boxes.

Encoding The character encoding used for reading the book file. Try changing this value if some characters (notably quote marks) are wrongly displayed in a book.

Override encoding If true, the 'Encoding' setting will always be used, regardless of what is specified in the book file. If false, the Encoding setting will be used only when the book file specifies no encoding.

UI Language The language in which labels, controls, headings and menus are displayed. If the value is 'automatic', your device's language will be used. The setting will not be applied at once; it will be applied the next time you start the application.

Force text direction Normally you can leave this set to 'automatic', but if words are apprearing in the wrong order (particularly if you're reading in a right-to-left language like Arabic or Hebrew) you can use this setting to force Freda to apply a particular text direction.

Recolour monochrome images Normally, Freda will recolour monochrome images using the foreground and background colours that you've chosen form reading. If this produces results that you don't like, set this setting to 'no'. Then, all monochrome images will be shown in plain blac-and-white.

Use Snakes This setting defines what happens when justified text can't be stretched to fit the column. Unless you have looked at http://xkcd.com/1676 it will make no sense to you.

Max rulesets in stylesheet Some books contain a large number of spurious style definitions. To improve performance, you can tell Freda to ignore these - a zero value indicates that all definitions will be loaded; any other value specified how many to load, before ignoring all the rest

Divs are Paragraphs Normally, when rendering EPUB and HTML, Freda assumes that the P tag introduces paragraphs, but the DIV tag doesn't - so layout options applicable to paragraphs (like 'force line break after para') won't be applied to DIV elements. If you want to change that behaviour, set this setting, which will tell Freda to treat DIVs as if they were Ps.

Characters are WordsIf set, Freda will assume that every character (grapheme) in the text is a separate word. If not set, Freda will make its own judgement based upon the book's language. This setting is useful for reading Chinese books.

Prompt before following links If 'yes', the program will ask you to confirm before following links (hrefs) in a book.

Keep screen switched on If 'no', the screen will lock after a period of no activity (note: you may need to restart the program to get this setting to take effect).

Read aloud under lock screen If set, the program will lock the screen when reading aloud.

Action when book link is tapped When you tap a book link (on a web book source, or DropBox, SkyDrive or an OPDS book source), the program can either open the book, or it can download the book to to the bookshelf while continuing to view the book source. This setting lets you tell the program which of these things to do, or whether it should ask what to do every time.

Low Memory Mode If 'yes', then program will operate in low memory mode. You should use this mode if your phone has only 512MB of memory, and you can try it in any case if you are experiencing problems with the app freezing. It will result in slower book loading and poorer performance in general. Note: you may need to restart the program to get this setting to take effect

Synch using internet If 'yes', then program will synchronise your latest reading position between multiple reading devices. Note: this feature requires access to OneDrive; if it is not working, check (using the OneDrive book source) that OneDrive access is available. Caution: this feature could be expensive if your data connection is metered; consider turning it off if you are using mobile internet.

UI Background Appearance of background image for main screen.

UI Theme Colour of background for main screen. Note that you can use this to set the colour of the commans bar and menus, and also (by moving the 'A' (alpha) colour control) to change the extent to which that colour is also applied to the background.

Controls

Presets

The Settings screen also provides a 'controls' page, where you can customise the various taps and swipe/drag actions that are used to control Freda's reading page.

Swipe to action Controls the effects of a finger swipe (or mouse drag) action, when reading a book.

Tap screen Controls the effect of a tap gesture (in the main page area). For each gesture, available behaviours will be some or all of:

  1. Change page: move to the next or previous page of the book.
  2. Open controls screen: display Freda's controls screen.
  3. Tap is ignored: do nothing.

Tap edge Controls the effect of a tap gesture (at the edge of the page area).

Tap corner options You can set special behaviours for a tap at each corner of the page, or you can set no special behaviour (in which case a corner tap will be handled just like an edge tap). The special behaviours include adding an annotation or bookmark, or going to the 'settings' screen, or starting to read aloud, or changing the screen brightness, or ... .

Turn One Page at a Time If 'yes', then page 'flick' gestures will turn only a single page; if 'no', such gestures will (if energetic enough) cause you to flick through multiple pages.

Reverse page change direction Controls the direction in which the page will turn in response to a screen edge tap.

Tap word Controls the effect of a tap gesture on a word. You can choose to handle this just the same as any other kind of tap, or you can choose to jump directly to the dictionary or translate screen when a word is tapped.

Page Edge For the 'Tap Edge' gesture setting, what % of page is considered to be 'edge'.

Presets

The Settings screen also provides a 'presets' page, which you can use to load and apply 'presets' (a preset is a named set of new settings). The 'Presets' page shows you a list of presets; tap on one of them to apply it, change it or delete it. If you want to add a new preset, tap the 'add' button in the command bar.

When saving a preset, you need to specify what particular settings should be included in the preset that you are saving. As a rule, you don't want to include every setting in a preset: I have some presets that relate mainly to layout, where I want different layout setups for different kinds of book (one for TXTs, another for Feedbooks books, another for Calibre-converted PDFs, another for Calibre-converted HTML, ...) but I also have different settings for colour/style (one for night-time, another for reading on the train, another for sunlight) and different control setups (one for standing in a train, another for lying in bed). If you put all your settings into every preset, you will keep modifying settings that you didn't want to change.

Troubleshooting and Advanced Topics

Margin and Layout Problems

Freda tries to interpret the margin and indent directives in a book in a reasonable way, but for some books you may have issues such as:

To resolve these problems for a particular book, use the Settings screen to change the 'Max Margin' value. You should experiment with lower (or zero) values, and see which value gives the best appearance.

Funny Characters appearing in the text (TXT books)

A TXT file contains a stream of bytes. Any program that wants to turn those bytes into text has to make some assumption about how the author of those bytes expected them to be converted into text - because the file just contains the bytes, in doesn't include any hints about what the bytes actually mean. In technical terms, the program (e.g. Freda) needs to decide what Encoding the author used, when converting their text into bytes. To learn all about encodings, look the subject up on Wikipedia ('Unicode' is a reasonable place to start).

If you don't want to make a lifetime's study of the subject, all you really need to know is: If your TXT book appears to include streams of weird characters, particularly in places where you expected to see quote-marks, dashes or accented characters, it's happening because Freda guessed what encoding was used by the file's author, and Freda guessed wrong. You can tell Freda what encoding it should be using for a particular book by using the Settings screen.

Funny Characters appearing in the text (EPUB and HTML books)

Unlike TXT files, EPUB and HTML files contain information to say how the file's bytes are intended to encode characters.

If your EPUB or HTML document is displayed with streams of weird characters, particularly in places where you expected to see quote-marks, dashes or accented characters, it's happening because Freda was unable to understand the encoding information suppplied by the file. That could happen, for example, because the file was badly formatted (a lot of Gutenberg EPUBs have scrambled, unintelligible encoding info), or because the encoding is an unusual one. You can tell Freda what encoding it should be using for a particular book by using the Settings screen. Note that you may need to change the setting 'Override Encoding' to true, to tell Freda that it must use your selected encoding, regardless of the encoding specified in the book itself.

DRM-Protected Books

Books that you have bought and downloaded from such sites as Barnes and Noble and Kobo may well be DRM-protected (encrypted). This is very likely to be the case if you have downloaded them using Adobe Digital Editions; such books are typically protected using the ADEPT copy-protection mechanism. Freda cannot read DRM-protected books. If you try to read a DRM-protected book using Freda, you will generally see just blank pages. A careful search of the internet (or, to be honest, even a rather perfunctory one) will tell you how to remove ADEPT DRM-protection from EPUB books - but do note that the procedure may be illegal where you live. I cannot recommend that you use it.

Untrusted web-sites and https

HTTPS connectivity to websites and OPDS sources may fail if the site's certification authority is not trusted by Microsoft (i.e. its root certificate is not in your device's certificate store). To fix this problem, install the necessary certificate. For Feedbooks, you can do this by navigating to http://www.startssl.com/certs/ca.cer in Internet Explorer on the device then following the instructions to install the certificate.

Known Limitations (a.k.a. Development 'to do' list)

Formatting

For performance reasons, Freda does not implement rich formatting features. Text alignment (left/right/centred/justified) is supported, as are the text styles regular, bold, italic and large. There is also limited support for indenting, line/page-breaks, and left, right, top and bottom margins around elements. More exotic formatting options (drop caps, flow round images, custom colours and embedded fonts ...) are not supported. If there is some formatting feature that you particularly desire, please email a request and I will add it to the list for future development.

CSS Style Sheets

Freda's handling of CSS style sheets is limited in two ways:

1) In-line styles are only partially interpreted.

2) Selectors cannot be concatenated (so Freda will not understand the syntax "div.foo p.bar {...}", intended to apply the properties {...} to any p.bar elements which have a div.foo ancestor). Concatenated selectors will be ignored. Freda does understand compound selectors like div.foo or p#bar.

HTML Books

HTML books are considered to consist of only a single file. If you have a set of HTML files that constitute separate volumes of a single work, Freda will be able to open them individually, but it will not understand references/links between them. If linkages between HTML files are important for you, you should build an EPUB file out of your collection of HTML files.

Bug Reports and Support Requests

Freda is a work in progress, and if you should happen to encounter any problems, I will be pleased to fix them.

Bug Reports are best emailed to me at support@turnipsoft.co.uk (using the 'email for support' button')

Please give as much detail as you can about any message that Freda displayed when the problem happened.

Support Questions that the manual does not satisfactorily address can be emailed to me; I will answer them, and add to the manual as necessary.

Licensing

The program uses the Majestic-12 HTMLParser, SharpBox and SharpZipLib libraries, which are licensed on terms permitting redistribution for commercial and non-commercial purposes. Freda also includes (in the source file CSSParser.cs) code adapted from Bonesoft's 'Simple CSS Parser' sample. This source code is also licensed on terms permitting its redistribution for commercial and non-commercial purposes.

Freda: the free ebook reader for Windows Phone

http://www.turnipsoft.co.uk/

Copyright © 2009-15 Turnipsoft freda@turnipsoft.co.uk


This license governs use of Freda. If you use Freda you accept this license. If you do not accept the license, do not use Freda.

1. Definitions

The terms "reproduce," "reproduction" and "distribution" have the same meaning here as under U.S. copyright law.

"You" means the licensee of the software.

"Your company" means the company you worked for when you downloaded the software.

"Internal use" means use within your company and specifically excludes the right to distribute the software outside of your company.

"Licensed patents" means any Turnipsoft patent claims which read directly on the software as distributed under this license.

2. Grant of Rights

(A) Copyright Grant- Subject to the terms of this license, Turnipsoft grants you a non-transferable, non-exclusive, worldwide, royalty-free copyright license to reproduce the software and reference it for internal use.

(B) Patent Grant- Subject to the terms of this license, Turnipsoft grants you a non-transferable, non-exclusive, worldwide, royalty-free patent license under licensed patents to use the software within your company.

3. Limitations

(A) No Trademark License- This license does not grant you any rights to use Turnipsoft's name, logo, or trademarks.

(B) If you begin patent litigation against Turnipsoft over patents that you think may apply to the software (including a cross-claim or counterclaim in a lawsuit), your license to the software ends automatically.

(C) The software is licensed "as-is." You bear the risk of using it. Turnipsoft gives no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, Turnipsoft excludes the implied warranties of merchantability, fitness for a particular purpose and non-infringement.


This program uses the Majestic-12 HTMLParser library http://www.majestic12.co.uk/projects/html_parser.php, which is available under the BSD licence, as follows:

Copyright © Alex Chudnovsky, Majestic-12 Ltd (UK). 2005+ All rights reserved

Web: http://www.majestic12.co.uk

E-mail: alexc@majestic12.co.uk

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 the Majestic-12 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.

This program uses the SharpBox library http://sharpbox.codeplex.com, which is available under the MIT licence, as follows:

Copyright © Dirk Eisenberg, Yury Averkiev, Renald Dubus, Jay Ongg . 2010

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

This program incorporates, in the source file CSSParser.cs, source code taken from BoneSoft's Simple CSS Parser sample, which is released under the Code Project Open Licence 1.02:

Code Project Open License 1.02

This License governs Your use of the Work. This License is intended to allow developers to use the Source Code and Executable Files provided as part of the Work in any application in any form.

The main points subject to the terms of the License are:

This License is entered between You, the individual or other entity reading or otherwise making use of the Work licensed pursuant to this License and the individual or other entity which offers the Work under the terms of this License ("Author").

License

THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CODE PROJECT OPEN LICENSE ("LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.

BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HEREIN, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE AUTHOR GRANTS YOU THE RIGHTS CONTAINED HEREIN IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. IF YOU DO NOT AGREE TO ACCEPT AND BE BOUND BY THE TERMS OF THIS LICENSE, YOU CANNOT MAKE ANY USE OF THE WORK.

Definitions.

  1. "Articles" means, collectively, all articles written by Author which describes how the Source Code and Executable Files for the Work may be used by a user.
  2. "Author" means the individual or entity that offers the Work under the terms of this License.
  3. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works.
  4. "Executable Files" refer to the executables, binary files, configuration and any required data files included in the Work.
  5. "Publisher" means the provider of the website, magazine, CD-ROM, DVD or other medium from or by which the Work is obtained by You.
  6. "Source Code" refers to the collection of source code and configuration files used to create the Executable Files.
  7. "Standard Version" refers to such a Work if it has not been modified, or has been modified in accordance with the consent of the Author, such consent being in the full discretion of the Author.
  8. "Work" refers to the collection of files distributed by the Publisher, including the Source Code, Executable Files, binaries, data files, documentation, whitepapers and the Articles.
  9. "You" is you, an individual or entity wishing to use the Work and exercise your rights under this License.

Fair Use/Fair Use Rights. Nothing in this License is intended to reduce, limit, or restrict any rights arising from fair use, fair dealing, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws.

License Grant. Subject to the terms and conditions of this License, the Author hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:

  1. You may use the standard version of the Source Code or Executable Files in Your own applications.
  2. You may apply bug fixes, portability fixes and other modifications obtained from the Public Domain or from the Author. A Work modified in such a way shall still be considered the standard version and will be subject to this License.
  3. You may otherwise modify Your copy of this Work (excluding the Articles) in any way to create a Derivative Work, provided that You insert a prominent notice in each changed file stating how, when and where You changed that file.
  4. You may distribute the standard version of the Executable Files and Source Code or Derivative Work in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution.
  5. The Articles discussing the Work published in any form by the author may not be distributed or republished without the Author's consent. The author retains copyright to any such Articles. You may use the Executable Files and Source Code pursuant to this License but you may not repost or republish or otherwise distribute or make available the Articles, without the prior written consent of the Author.

Any subroutines or modules supplied by You and linked into the Source Code or Executable Files this Work shall not be considered part of this Work and will not be subject to the terms of this License.

Patent License. Subject to the terms and conditions of this License, each Author hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, import, and otherwise transfer the Work.

Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:

  1. You agree not to remove any of the original copyright, patent, trademark, and attribution notices and associated disclaimers that may appear in the Source Code or Executable Files.
  2. You agree not to advertise or in any way imply that this Work is a product of Your own.
  3. The name of the Author may not be used to endorse or promote products derived from the Work without the prior written consent of the Author.
  4. You agree not to sell, lease, or rent any part of the Work. This does not restrict you from including the Work or any part of the Work inside a larger software distribution that itself is being sold. The Work by itself, though, cannot be sold, leased or rented.
  5. You may distribute the Executable Files and Source Code only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy of the Executable Files or Source Code You distribute and ensure that anyone receiving such Executable Files and Source Code agrees that the terms of this License apply to such Executable Files and/or Source Code. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute the Executable Files or Source Code with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License.
  6. You agree not to use the Work for illegal, immoral or improper purposes, or on pages containing illegal, immoral or improper material. The Work is subject to applicable export laws. You agree to comply with all such laws and regulations that may apply to the Work after Your receipt of the Work.

Representations, Warranties and Disclaimer. THIS WORK IS PROVIDED "AS IS", "WHERE IS" AND "AS AVAILABLE", WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES OR CONDITIONS OR GUARANTEES. YOU, THE USER, ASSUME ALL RISK IN ITS USE, INCLUDING COPYRIGHT INFRINGEMENT, PATENT INFRINGEMENT, SUITABILITY, ETC. AUTHOR EXPRESSLY DISCLAIMS ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES OR CONDITIONS, INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF MERCHANTABILITY, MERCHANTABLE QUALITY OR FITNESS FOR A PARTICULAR PURPOSE, OR ANY WARRANTY OF TITLE OR NON-INFRINGEMENT, OR THAT THE WORK (OR ANY PORTION THEREOF) IS CORRECT, USEFUL, BUG-FREE OR FREE OF VIRUSES. YOU MUST PASS THIS DISCLAIMER ON WHENEVER YOU DISTRIBUTE THE WORK OR DERIVATIVE WORKS.

Indemnity. You agree to defend, indemnify and hold harmless the Author and the Publisher from and against any claims, suits, losses, damages, liabilities, costs, and expenses (including reasonable legal or attorneys' fees) resulting from or relating to any use of the Work by You.

Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL THE AUTHOR OR THE PUBLISHER BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK OR OTHERWISE, EVEN IF THE AUTHOR OR THE PUBLISHER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

Termination.

  1. This License and the rights granted hereunder will terminate automatically upon any breach by You of any term of this License. Individuals or entities who have received Derivative Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 6, 7, 8, 9, 10 and 11 will survive any termination of this License.
  2. If You bring a copyright, trademark, patent or any other infringement claim against any contributor over infringements You claim are made by the Work, your License from such contributor to the Work ends automatically.
  3. Subject to the above terms and conditions, this License is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, the Author reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.

Publisher. The parties hereby confirm that the Publisher shall not, under any circumstances, be responsible for and shall not have any liability in respect of the subject matter of this License. The Publisher makes no warranty whatsoever in connection with the Work and shall not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. The Publisher reserves the right to cease making the Work available to You at any time without notice

Miscellaneous

  1. This License shall be governed by the laws of the location of the head office of the Author or if the Author is an individual, the laws of location of the principal place of residence of the Author.
  2. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this License, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
  3. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
  4. This License constitutes the entire agreement between the parties with respect to the Work licensed herein. There are no understandings, agreements or representations with respect to the Work not specified herein. The Author shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Author and You.

This program uses the SharpZipLib library http://www.icsharpcode.net/OpenSource/SharpZipLib/, which is available under the GPL licence, with the following exception:

Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination.

As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.