Difference between revisions of "EBook-Reader"
Stickywhipit (talk | contribs) |
m (→Book Format Issues: problem of parse and zip the above list formats) |
||
(13 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
===Application description from a users perspective === | ===Application description from a users perspective === | ||
− | Scene 1: Splash image and 3 buttons: | + | Scene 1: Splash image and 3 buttons: [[Image: Scene1.png|thumb|right]] |
.. Where I left off ... -- Opens the last book you read at the place you stopped. | .. Where I left off ... -- Opens the last book you read at the place you stopped. | ||
Line 14: | Line 14: | ||
Images default to no larger than 1/4 screen, but touch results in lightbox like zoom. | Images default to no larger than 1/4 screen, but touch results in lightbox like zoom. | ||
− | Menu at splash or library offers import, and delete of books. When in a shelf, books can be deleted by dragging them to the recycle. | + | Menu at splash or library offers import, and delete of books. When in a shelf, books can be deleted by dragging them to the recycle. |
===Features Wish List=== | ===Features Wish List=== | ||
Line 28: | Line 28: | ||
## plain text | ## plain text | ||
## plucker | ## plucker | ||
+ | ## .lit | ||
# on Pre conversion of html and text docs by download from the cloud. | # on Pre conversion of html and text docs by download from the cloud. | ||
# Library supports user definable catagories for sorting and shelving | # Library supports user definable catagories for sorting and shelving | ||
Line 50: | Line 51: | ||
## auto-scrolling with user adjustable speed | ## auto-scrolling with user adjustable speed | ||
### Pause auto-scrolling by tapping gesture area | ### Pause auto-scrolling by tapping gesture area | ||
+ | ## page turn on screen tap option | ||
# support for covers. | # support for covers. | ||
# coverflow view of shelves. | # coverflow view of shelves. | ||
Line 57: | Line 59: | ||
# Copy & Paste words | # Copy & Paste words | ||
## Dictionary search implemented | ## Dictionary search implemented | ||
+ | # Support for rotation | ||
+ | ## Portrait and Landscape views (at least for the reading screen) | ||
+ | ## Auto adjust gesture orientation to match view | ||
+ | ## Include a rotation "lock" to prevent unwanted rotations (or just ignore the accelerometer and make it a button or gesture controlled rotation) | ||
===Data Structure=== | ===Data Structure=== | ||
Line 68: | Line 74: | ||
* ShelfId: | * ShelfId: | ||
* CoverImage: Filename | * CoverImage: Filename | ||
+ | * Encrypted: boolean | ||
+ | * Format: string (book format) | ||
'''Table: BookSeries''' | '''Table: BookSeries''' | ||
* bookseriesId: (globally unique ID - a system generated number) | * bookseriesId: (globally unique ID - a system generated number) | ||
− | * catSeriesId: (must be present in book table) | + | * catSeriesId: (must be present in book table and the catType must be 'S') |
− | * catBookId: (must be present in book table and the catType ) | + | * catBookId: (must be present in book table and the catType must be 'B') |
'''Table: Bookmarks''' | '''Table: Bookmarks''' | ||
Line 79: | Line 87: | ||
* Position: ( an integer, refering to the character in the file at the top of the screen.) | * Position: ( an integer, refering to the character in the file at the top of the screen.) | ||
− | '''Table: | + | '''Table: BookShelf''' |
− | * | + | * shelfId: |
* ShelfName: | * ShelfName: | ||
* ShelfOrder: (A, T, or U) Representing Author, Title or User Set | * ShelfOrder: (A, T, or U) Representing Author, Title or User Set | ||
'''Table ShelfOrder''' | '''Table ShelfOrder''' | ||
− | * | + | * shelfId: |
− | * | + | * bookId: |
* position: (integer representing the position of this book on this shelf) | * position: (integer representing the position of this book on this shelf) | ||
'''Table: BookText''' | '''Table: BookText''' | ||
− | * | + | * BookId: |
* BookText: | * BookText: | ||
Line 98: | Line 106: | ||
* This structure makes no provision for the internal storage of images. | * This structure makes no provision for the internal storage of images. | ||
* Should we actually store the text of the book in the DB or do we leave the book on the file system and just store a link to it? | * Should we actually store the text of the book in the DB or do we leave the book on the file system and just store a link to it? | ||
+ | ** Correct me if i am wrong, but the current SDK does not allow for writing files to the file system, so the database would be the best and sort-of only way to do it. Also, the ajax request is a little slow, the database might show better performance loading. | ||
There is some point, therefore to consider if in booktext, we want to simply store a plucker file, which CAN contain images and text intermingled. | There is some point, therefore to consider if in booktext, we want to simply store a plucker file, which CAN contain images and text intermingled. | ||
Line 106: | Line 115: | ||
* Can javascript on the device effectively parse/navigate the plucker format (if we settle on this one), or do we need our own format? | * Can javascript on the device effectively parse/navigate the plucker format (if we settle on this one), or do we need our own format? | ||
** '''Perhaps.''' plucker decoding sources in JAVA at http://www.fbreader.org/downloads.php | ** '''Perhaps.''' plucker decoding sources in JAVA at http://www.fbreader.org/downloads.php | ||
+ | ** Possible ePub since it's basically XHTML? - ePub makes the most sense as a format. It's completely open, and it's really just HTML inside the file. | ||
* Once we settle on a format, will the device be powerful enough to convert other formats to this one, or will we need a PC app to do the converting? | * Once we settle on a format, will the device be powerful enough to convert other formats to this one, or will we need a PC app to do the converting? | ||
** on pc app | ** on pc app | ||
− | * | + | ** some scripts found so far: |
+ | *** ereader2html -- python app, same as plucker converters. | ||
+ | *** pdbshred -- Binary app for unencrypting secure palm reader pdb's. Sorry. | ||
+ | *** Shouldn't reinvent the wheel. Use calibre for conversion, it's available on all platforms http://calibre.kovidgoyal.net/ | ||
+ | *** (include others as you find them) | ||
+ | * Has anyone found a free and open source method to unzip files or data streams in javascript?? | ||
** all i have found is a page that refers to the huffman compression technique (http://rumkin.com/tools/compression/compress_huff.php), but i don't know if that is how epub files are zipped and i don't know if we can get our hands on the source. | ** all i have found is a page that refers to the huffman compression technique (http://rumkin.com/tools/compression/compress_huff.php), but i don't know if that is how epub files are zipped and i don't know if we can get our hands on the source. | ||
+ | **: note that this page says that compressing 15K takes MINUTES... ooops. :-( Not going to work | ||
+ | *Can we access the Linux command line? Awk and sed could do for some of the conversion, and gzip for the zipping/unzipping. -FreeTim |
Latest revision as of 16:13, 1 January 2010
Application description from a users perspective
Scene 1: Splash image and 3 buttons:
.. Where I left off ... -- Opens the last book you read at the place you stopped.
.. Bookmarks ... -- opens a list of the books you have bookmarks in and lets you open them to there. -- previews 2 lines above and below bookmark.
... Library ... -- opens a scrollable page of "shelves" Each shelf has a label which is user defined, and each shelf presents the books on it as a coverflow. Books can be moved between shelves by dragging and dropping. Each shelf has a context menu to control order, title, author or user defined. If user defined menu will present shelf as a draggable list instead of a coverflow when you want to re-order books. backswipe returns to coverflow.
in either the bookmarks view, tapping a book takes you to either the bookmark or the title page. upswipe downswipe provide smooth scrolling. Left and right swipe provide page at a time scrolling. Back swipe in gesture offers to bookmark with a dialog and returns to the shelf you came from.
When on a book, top left menu presents presentation options, which can be set book by book or globally. Type face (if I can figure out how), size, leading, justification, colors etc..
Images default to no larger than 1/4 screen, but touch results in lightbox like zoom.
Menu at splash or library offers import, and delete of books. When in a shelf, books can be deleted by dragging them to the recycle.
Features Wish List
- on-pc conversion of various formats to pre-compatible format -probably using plucker distiller. Should support
- html
- rde
- doc
- m4b
- pdb (palm-doc)
- pdb (isilo), prc (unencrypted mobipocket)
- prc (encrypted) # lots of people with a ton of fictionwise books want this
- epub [1]
- plain text
- plucker
- .lit
- on Pre conversion of html and text docs by download from the cloud.
- Library supports user definable catagories for sorting and shelving
- Shelves can be user defined to hold any collection of books a reader cares to:
- By author
- By Genre
- By Geography
- By cover color
- By Series # very useful to group books in a series together
- The user should define the sorting catagories. Shelf design can initially be a scroll list like the Contacts app.
- Book display page is minimally invasive making the most space available to read on as possible
- Typography is bifocal friendly. User definable print sizes, and if possible type faces.
- user defined foreground/background colors for text.
- Sepia
- Night mode
- Adjust screen brightness
- multiple bookmarks per doc.
- shallow menus
- smooth scrolling or page-at-a-time scrolling by gestures.
- plucker style button-based scrolling
- swipe gesture based scrolling
- auto-scrolling with user adjustable speed
- Pause auto-scrolling by tapping gesture area
- page turn on screen tap option
- support for covers.
- coverflow view of shelves.
- easy rapid sorting of books onto shelves.
- Change text size
- Possibly be able to add books over Wi-Fi
- Copy & Paste words
- Dictionary search implemented
- Support for rotation
- Portrait and Landscape views (at least for the reading screen)
- Auto adjust gesture orientation to match view
- Include a rotation "lock" to prevent unwanted rotations (or just ignore the accelerometer and make it a button or gesture controlled rotation)
Data Structure
Table: Catalog
- catalogId: (globally unique ID - a system generated number)
- Title: string
- Author: string
- Genre: string
- catalogType: (B,S - book or series)
- ShelfId:
- CoverImage: Filename
- Encrypted: boolean
- Format: string (book format)
Table: BookSeries
- bookseriesId: (globally unique ID - a system generated number)
- catSeriesId: (must be present in book table and the catType must be 'S')
- catBookId: (must be present in book table and the catType must be 'B')
Table: Bookmarks
- bkmkId:
- bookId: (must be present in book table)
- Position: ( an integer, refering to the character in the file at the top of the screen.)
Table: BookShelf
- shelfId:
- ShelfName:
- ShelfOrder: (A, T, or U) Representing Author, Title or User Set
Table ShelfOrder
- shelfId:
- bookId:
- position: (integer representing the position of this book on this shelf)
Table: BookText
- BookId:
- BookText:
Data Issues
- This structure does not provide for books stored as chapters. This structure presumes a book is a single document. That document might have internal chapter indicators, but this structure does not divide the book up.
- This structure makes no provision for the internal storage of images.
- Should we actually store the text of the book in the DB or do we leave the book on the file system and just store a link to it?
- Correct me if i am wrong, but the current SDK does not allow for writing files to the file system, so the database would be the best and sort-of only way to do it. Also, the ajax request is a little slow, the database might show better performance loading.
There is some point, therefore to consider if in booktext, we want to simply store a plucker file, which CAN contain images and text intermingled.
Book Format Issues
- Can javascript on the device natively parse/navigate all of the above list formats?
- No.
- Can javascript on the device effectively parse/navigate the plucker format (if we settle on this one), or do we need our own format?
- Perhaps. plucker decoding sources in JAVA at http://www.fbreader.org/downloads.php
- Possible ePub since it's basically XHTML? - ePub makes the most sense as a format. It's completely open, and it's really just HTML inside the file.
- Once we settle on a format, will the device be powerful enough to convert other formats to this one, or will we need a PC app to do the converting?
- on pc app
- some scripts found so far:
- ereader2html -- python app, same as plucker converters.
- pdbshred -- Binary app for unencrypting secure palm reader pdb's. Sorry.
- Shouldn't reinvent the wheel. Use calibre for conversion, it's available on all platforms http://calibre.kovidgoyal.net/
- (include others as you find them)
- Has anyone found a free and open source method to unzip files or data streams in javascript??
- all i have found is a page that refers to the huffman compression technique (http://rumkin.com/tools/compression/compress_huff.php), but i don't know if that is how epub files are zipped and i don't know if we can get our hands on the source.
- note that this page says that compressing 15K takes MINUTES... ooops. :-( Not going to work
- all i have found is a page that refers to the huffman compression technique (http://rumkin.com/tools/compression/compress_huff.php), but i don't know if that is how epub files are zipped and i don't know if we can get our hands on the source.
- Can we access the Linux command line? Awk and sed could do for some of the conversion, and gzip for the zipping/unzipping. -FreeTim