Freda is a free program for reading electronic books (ebooks) on Windows Phones.
Features:
You can download Freda from the Windows Phone Marketplace.
Note: there is an earlier version of Freda for Windows Mobile 6.x (and 5, 2003 and WinCE). See here.
|
|
|
|
|
|
|
|
|
|
|
|
When you first start Freda, you will see a list containing four classic books. To open one of them, touch the book title. You will see a circle of moving dots for a while. When the book is downloaded and ready for you to start reading, the first page of the book will appear. Normally, this will be a 'title page', containing the book title and/or the picture from the cover. 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 bottom of the screen as long as the scanning process continues (maybe for several minutes), but you can begin reading right away - tap the bottom of the page to begin reading.
There is a demo video on youtube.
For more information, read on ...
There are two main screens in 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 screen, you have a selection of pages for accessing the different features.
The Chooser screen consists of a list of different places where you can find books. When you open a book, Freda will switch to the Reader screen.
Whatever screen you are on, the hardware 'Back' button will always take you back to the previous screen.
The chooser screen consists of three tabs - a table of book sources, a list of the books currently in your bookshelf, and a 'more' tab that you can use to get at various other features of Freda. These are shown on a 'panorama' display; swipe left or right to move between them.
The bookshelf shows a list 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.
You can access a menu of additional options by long-tapping (tap-and-hold) on a book tile. The 'Info' option will show you information about the book, the 'Delete' option will remove the book from your phone, and the 'Add to favourites' option will flag the book as a favourite (useful for finding it in the future).
There is also an option to 'Pin to start'. This will create a shortcut on the phone's start screen, to take you directly to the book.
You can keep as many books as you like in your bookshelf, and you can sort and filter them using the 'filter' button at the bottom of the screen.
Along the bottom of the bookshelf screen, you have menu buttons:
Book: return to the Reader screen, and whatever book you are reading at the moment
Filter: set criteria for filtering and sorting the books on the bookshelf
Settings: customise Freda's appearance and behaviour
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.
By long-tapping (tap-and-hold) on a book source, you can access additional options for removing or modifying book sources, changing their order on the screen, setting up username/password (for sources that require them) and hiding/un-hiding book sources.
When you first run Freda, you will see book sources for Feedbooks, Calibre (see here for details of how to set this up), SkyDrive, Gutenberg and Epub Books. Further 'hidden' sources are provided; you can see these by using the 'unhide' menu option.
Along the bottom of the sources screen, you have menu buttons:
Book: return to the Reader screen, and whatever book you are reading at the moment
Add Source: add a new source for getting books from
Settings: customise Freda's appearance and behaviour
These screens allow you to find and download books from 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 five buttons, for moving around within the catalog:
Back: goes back to the last catalog page you were looking at
Previous: moves to the previous catalog page in a list
Home: moves to the starting page (root) in the catalog
Next: moves to the previous catalog page in a list
Refesh: refresh the current folder contents
Search: search the current catalogDepending 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, such as 'all authors beginning 'A'').
The 'search' button will be available only if the 'search string' has been set up for this catalog. You can set this up using the 'edit' button mentioned below.
At the bottom of the source page, there are buttons:
Edit: allows you to update the name, URL etc. for the source
Login: allows you to set up authentication information for the source
Bulk Download: Allows you to download multiple books from the current source screenWhen you tap the 'login' button, the 'authentication' screen will be displayed. There are two types of authentication that these sources may use: either 'http' authentication or 'cookie' authentication. Most web-sites use 'cookie' authentication, so if unsure, try this one first. But note that Calibre uses 'http' authentication. It does no harm to use both (i.e. enter a username and password using both mechanisms) - if a source is not expecting the information, it will just ignore it.
|
![]() |
On the 'authentication' screen, pick the appropriate authentication type, and then:
Some sources (to be technical, those using https connections, and a certificate that has not been signed by a certification authority trusted by Microsoft) may fail to authenticate properly. You are likely to encounter this problem with Feedbooks, for example. The solution is to install that site's root certificate in your phone's store of trusted certificates. Instructions for how to do this for Feedbooks are here.
You can connect to Microsoft SkyDrive using Freda, and download book files from there. Tap the SkyDrive tile on the chooser screen to get started (if you're updating from an earlier version of Freda, there might not be a SkyDrive tile; in that case, use the 'add source' button to create one). When you first open the SkyDrive source (and afterwards, any time you tap the 'login' button) Freda will display the Microsoft Live connection screen. You need to enter the email address and password associated with your Windows Live account, and tap the 'Yes' button to grant permission for Freda to read your SkyDrive.
|
|
|
Freda will then attempt to connect to SkyDrive. Once it succeeds, Freda will show a screen containing a a combination of 'folder' links (which look like folders) and 'book' links (which look like books). Tapping a 'folder link' button takes you to a subfolder in your SkyDrive. Tapping a 'book link' tile will download or open a book file.
Above the list of links, you will see three buttons:
Back: goes back to the last folder you were looking at
Home: moves to the starting folder (root).
Refesh: refresh the current folder contentsIf you have a DropBox account, Freda can connect to it using this type of book source. Use the 'add source' button to create a DropBox book source. Enter a name for the source ('my dropbox' for instance) and the name of the folder where you want to start (if unsure, use '/', or just leave the value blank). Tap the (✓) ('OK') button to create the source. Freda will then ask you to provide an email address and password, so Freda can set up the link to your DropBox. If you want to change these in the future, you can access them using the 'login' button on the source screen.
The screen shows a combination of 'folder' links (which look like folders) and 'book' links (which look like books). Tapping a 'folder link' button takes you to a subfolder in your DropBox store. Tapping a 'book link' tile will download or open a book file.
Above the list of links, you will see three buttons:
Back: goes back to the last folder you were looking at
Home: moves to the starting folder (root).
Refesh: refresh the current folder contents
To access a website for downloading books, enter the web address into the text box, and press the [↓] button. The website contents will be displayed in the window; you can now navigate to further internet locations by tapping on links within the window.
When you tap on a link to a book (a file name ending in TXT, FB2 or EPUB) Freda will download and open it. Book links that don't end in TXT, FB2 or EPUB will confuse Freda (the book content may load into the web browser window instead of opening in the book reader). To download such books, you should move the 'toggle' control below the web browser window to the 'Download' position, and then click on the link that you want to download from.
A website may require a user name and password. To set this up, tap the 'login' button on the source screen. The 'authentication' screen will be displayed. There are two types of authentication that these sources may use: either 'http' authentication or 'cookie' authentication. Most web-sites use 'cookie' authentication, so if unsure, try this one first. It does no harm to use both (i.e. enter a username and password using both mechanisms) - if a source is not expecting the information, it will just ignore it.
On the 'authentication' screen, pick the appropriate authentication type, and then:
Some websites (to be technical, those using https connections, and a certificate that has not been signed by a certification authority trusted by Microsoft) may fail to authenticate properly. The solution is to install that site's root certificate in your phone's store of trusted certificates. Instructions for how to do this are here.
The 'more' screen shows a list of additional features within the program:
The Reader screen shows the text of the book you are reading. While a book is opening, it will show a spinning circle of dots; as soon as Freda has some text to show you, the text will come up on screen. In the background, 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 in the meantime. 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 or slide the screen up and down. To access all the other functions of the Reader screen, tap on the central area of the screen. These user interface gestures are customisable (see Settings).
A center-tap while reading book text will display the Reader 'control' screen.
The screen contains a list of links:
At the bottom of the screen, you will see a list of 'preset settings'; tap on one of these to apply the indicated new settings. You can add new presets using the Settings screen.
The Settings screen allows you to customise various program settings, controlling appearance and behaviour of the program.
The basic settings screen shows buttons for some standard colour schemes, a font selector control and [+] and [-] buttons for increasing/decreasing text size, and a slider for changing the brightness of the book screen. There is a text block (containing the 'lorem ipsum' text) so you can see the settings you have chosen. To apply your chosen settings, tap the 'back' hardware button; to revert to the previous settings, use the 'undo' button.
The controls screen shows all the places on the book page that you can tap, to navigate from page to page, or to access program features. Each location shows an icon indicating what control action is associated with that area, or an empty circle if there is no special action associated with it. Tap on a location to see the list of available control actions, and modify the action if you wish. To apply your chosen settings, tap the 'back' hardware button; to revert to the previous settings, use the 'undo' button.
To access the full range of program settings, swipe across to the 'advanced' settings screen. 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; 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).
Orientation The orientation (portrait or landscape) that is used for displaying book text. There is also a value 'auto', which will rotate the text according to the orientation of the phone.
Controls
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:
Tap edge Controls the effect of a tap gesture (at the edge of the page area).
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.
Tap corner ... 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.
Hold Edge Controls the effect of a 'hold' (long tap) gesture at the edge of the page area.
Page Edge For the 'Tap Edge' gesture setting, what % of page is considered to be 'edge'.
Page Change Motion Controls the appearance of a page turn; you can set it to 'spin', 'slide' or 'none'.
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.
Layout
Line spacing The spacing between lines. 1 gives the usual appearance.
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).
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.
Show clock on book screen If set, a digital clock will be shown at the top of the book screen.
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.
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.
Prompt before following links If 'yes', the program will ask you to confirm before following links (hrefs) in a book.
Confirm program exit If 'yes', the program will ask you to confirm before exiting; if 'no', the program will exit when you tap the 'back' button from the main page.
Disable idle detection 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).
Use location info If 'yes', then program will make use of your location information, so that the on-screen advertising can display ads that are relevant to your current location.
Use XNA Graphics If 'yes', then program will display book contents using 'XNA' graphics. Text will display more rapidly and scroll much more smoothly, but it may be slightly less legible.
Use Background Image If 'yes', the chooser screen will use a patterned background; if 'no' it will use a plain background
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 256MB 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
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. If you want to add a new preset, scroll down to the bottom of the presets list, type in the new preset name and tap the [add favourite] button.
To save current settings into a preset, long-tap on it, and then choose the 'save' option.
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.
For all but the first four presets, there is also a 'delete' function, which you can use to get rid of the indicated preset.
Freda is still work in progress (but hey, you get what you pay for ... and Freda is free!). If you are experiencing problems with the program, you can use this screen to re-initialise the program in various ways, or to send us a support request by email.
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:
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 the phone'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 phone, then following the instructions to install the certificate.
Formatting
For performance reasons, and in recognition of the fact that Windows Phone screens are small, 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, boxes, 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.
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.
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
Copyright © 2009-12 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.02This 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:
- Source Code and Executable Files can be used in commercial applications;
- Source Code and Executable Files can be redistributed; and
- Source Code can be modified to create derivative works.
- No claim of suitability, guarantee, or any warranty whatsoever is provided. The software is provided "as-is".
- The Article accompanying the Work may not be distributed or republished without the Author's consent
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").
LicenseTHE 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.
- "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.
- "Author" means the individual or entity that offers the Work under the terms of this License.
- "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works.
- "Executable Files" refer to the executables, binary files, configuration and any required data files included in the Work.
- "Publisher" means the provider of the website, magazine, CD-ROM, DVD or other medium from or by which the Work is obtained by You.
- "Source Code" refers to the collection of source code and configuration files used to create the Executable Files.
- "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.
- "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.
- "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:
- You may use the standard version of the Source Code or Executable Files in Your own applications.
- 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.
- 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.
- 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.
- 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:
- 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.
- You agree not to advertise or in any way imply that this Work is a product of Your own.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
- 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.
- 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.
- 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.
- 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.