Difference between revisions of "EBook-Reader"

From WebOS Internals
Jump to navigation Jump to search
m (→‎Book Format Issues: problem of parse and zip the above list formats)
 
(10 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'''
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??
 
* 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 17:13, 1 January 2010

Application description from a users perspective

Scene 1: Splash image and 3 buttons:

Scene1.png

.. 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

  1. on-pc conversion of various formats to pre-compatible format -probably using plucker distiller. Should support
    1. html
    2. rde
    3. doc
    4. m4b
    5. pdb (palm-doc)
    6. pdb (isilo), prc (unencrypted mobipocket)
    7. prc (encrypted) # lots of people with a ton of fictionwise books want this
    8. epub [1]
    9. plain text
    10. plucker
    11. .lit
  2. on Pre conversion of html and text docs by download from the cloud.
  3. 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.
  4. Book display page is minimally invasive making the most space available to read on as possible
  5. Typography is bifocal friendly. User definable print sizes, and if possible type faces.
  6. user defined foreground/background colors for text.
    1. Sepia
    2. Night mode
    3. Adjust screen brightness
  7. multiple bookmarks per doc.
  8. shallow menus
  9. smooth scrolling or page-at-a-time scrolling by gestures.
    1. plucker style button-based scrolling
    2. swipe gesture based scrolling
    3. auto-scrolling with user adjustable speed
      1. Pause auto-scrolling by tapping gesture area
    4. page turn on screen tap option
  10. support for covers.
  11. coverflow view of shelves.
  12. easy rapid sorting of books onto shelves.
  13. Change text size
  14. Possibly be able to add books over Wi-Fi
  15. Copy & Paste words
    1. Dictionary search implemented
  16. Support for rotation
    1. Portrait and Landscape views (at least for the reading screen)
    2. Auto adjust gesture orientation to match view
    3. 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
  • Can we access the Linux command line? Awk and sed could do for some of the conversion, and gzip for the zipping/unzipping. -FreeTim