diff options
Diffstat (limited to 'platform/android/viewer/ClassStructure.txt')
-rw-r--r-- | platform/android/viewer/ClassStructure.txt | 182 |
1 files changed, 0 insertions, 182 deletions
diff --git a/platform/android/viewer/ClassStructure.txt b/platform/android/viewer/ClassStructure.txt deleted file mode 100644 index ff1f9409..00000000 --- a/platform/android/viewer/ClassStructure.txt +++ /dev/null @@ -1,182 +0,0 @@ -MuPDFActivity -~~~~~~~~~~~~~ - -MuPDFActivity is the main activity used when displaying and interacting with a -document. This class is responsible for creating the view hierarchy and the -menus. - -Main view classes -~~~~~~~~~~~~~~~~~ - -ReaderView -~~~~~~~~~~ -MuPDF uses Android's standard Adapter/AdapterView paradigm, where a subclass of -BaseAdapter supplies multiple views that have their motion on screen -choreographed by a subclass of AdapterView. There are several standard -AdapterView subclasses, but none support zooming into a specific subview and -then panning within it, so MuPDF has its own AdapterView subclass, namely -ReaderView. The class is intended to be general purpose and usable within any -document-viewing application. During page viewing, ReaderView handles all touch -events, recognises gestures and positions the displayed document pages -accordingly. ReaderView needs to handle positioning slightly differently -depending on whether MuPDF is reflowing text or not, and so it has two slightly -different modes of operation. - -MuPDFReaderView -~~~~~~~~~~~~~~~ -MuPDFReaderView subclasses ReaderView, so as to provide some of the -page-positioning behaviour that is specific to MuPDF. It overrides some of the -gesture recognition methods of ReaderView, so that it can perform special -handling of (e.g.) tapping on the side of the screen for page progression, and -tapping on links or form fields. It also handles the disabling of scrolling -during text-selection and annotation-drawing, and it performs the setup -operations needed by the individual page views as each newly appears. - -MuPDFView -~~~~~~~~~ -Document viewing uses different View subclasses to display the individual pages -depending on whether reflowing text or displaying pages unaltered. MuPDFView is -the common interface to the two view subclasses. - -PageView -~~~~~~~~ -PageView is the main View class used for non-reflow display of a page. Like -ReaderView, it is intended to be, as much as is possible, independent of the -specifics of MuPDF and usable in general document display apps. It is a -subclass of ViewGroup because page displays are built from several layers. The -lowest layer is a rendering of the page at a resolution that matches the screen -exactly when maximally zoomed out so that the page fits the screen. As the user -zooms in, this layer maintains a visible appearance of the page, but one that -becomes more blurred as zooming in progresses. A second layer provides a higher -resolution rendering of just the area of the page that is visible on screen, -and at a resolution that matches the screen. As the user pans, this layer is -updated on a background thread, so parts of the blurred layer will temporarily -become visible, but only momentarily later to be replaced by the high-quality -rendering. There is one further layer that is used to draw transparent shapes -for highlighting and the like. - -MuPDFPageView -~~~~~~~~~~~~~ -MuPDFPageView is a subclass of PageView, which handles some of the specifics of -MuPDF's behaviour, such as taps on links and form fields, text selection, and -annotation drawing. It also handles its parent class's bitmap rendering calls. -This is the class used to display pages in non-reflow mode. It implements the -MuPDFView interface. - -MuPDFReflowView -~~~~~~~~~~~~~~~ -This is the class used to display pages in reflow mode. Like MuPDFPageView it -implements the MuPDFView interface. It is a subclass of WebView, and achieves -reflowing by loading an HTML version of the page, which the MuPDF core -constructs. - -MuPDFPageAdapter and MuPDFReflowAdapter -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -As with any AdapterView subclass, ReaderView needs an Adapter subclass to -supply, on demand, the subviews for the pages currently displayed. These are -the two Adapter subclasses, supplying the subviews as MuPDFPageView and -MuPDFReflowView objects respectively. The former is a little more complex than -the latter, since it caches the sizes of the pages corresponding to the views -it supplies. It does so, so that page views, on their second and subsequent -appearances, can take on their correct size immediately. (The determining of -page size is not a completely trivial operation and is performed on a -background thread, as is all interaction with the core MuPDF library). - -C library wrapper -~~~~~~~~~~~~~~~~~ - -MuPDFCore -~~~~~~~~~ -This class is the interface to the MuPDF C library. It is used to render bitmap -versions of the page for display in the view classes mentioned above. It also -provides for interaction with objects within the page, such as the individual -text objects and annotations. Many of the methods take too long an execution -time to be run on the UI thread, hence they need to be run in the background, -and because even the fast methods have to be synchronised with the slower -methods, (almost) all methods should be called in the background. There are a -few non synchronised ones that have special purposes. - -Link handling -~~~~~~~~~~~~~ -There are three types of PDF links, each entailing different information and -requiring different handling. There are five classes involved in their -representation. - -LinkInfo is the base class representing any one of the three - -LinkInfoExternal, LinkInfoInternal and LinkInfoRemote are the three subclasses -representing the specific cases. - -LinkInfoVisitor is a class implementing a common Java paradigm which allows -case analysis on the three different types of link, executing different methods -for each. - -BitmapHolder -~~~~~~~~~~~~ -BitmapHolder is the solution to a problem in allocating the Bitmaps to which -rendering is performed by background tasks. Renderings for the purpose of -update have to be passed a Bitmap with the current page state. During frenetic -page flicking a large number of rendering tasks can be queued, each holding -reference to a Bitmap. Rather than pass the Bitmap directly, we pass a -BitmapHolder containing a reference to the Bitmap. When a page view transitions -off screen, the BitmapHolder's reference to the Bitmap can be nulled to release -it. - -SearchTask and SearchTaskResult -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -SearchTask encapsulates the process of searching for a text string within a -document. The class uses an AsyncTask internally to perform the search in the -background and reports the result by calling onTextFound. A SearchTaskResult -object is used to return the result of the search. - -SafeAnimatorInflator -~~~~~~~~~~~~~~~~~~~~ -This class is a simple wrapper around AnimatorInflator. AnimatorInflator -doesn't exist in some of the Android API levels MuPDF supports, and the wrapper -allows for a test of API-level before the point at which the class would be -loaded. - -MuPDFAlert and MuPDFAlertInternal -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -This class represents the information issued by a javascript app.alert call. -MuPDFAlertInternal represents the same information, but with Java enums -replaced by ints, which are easier to return from JNI code. - -TextChar and TextWord -~~~~~~~~~~~~~~~~~~~~~ -TextChar is used when processing the individual characters of the page. Each -TextChar object contains the character and the rectangular area of the page at -which it appears. TextWord is used to gather TextChars into words. - -Annotation -~~~~~~~~~~ -This class represents the type and position on page of a PDF annotation. - -Other activities -~~~~~~~~~~~~~~~~ -The app has three activities other than document-viewing. - -ChoosePDFActivity -~~~~~~~~~~~~~~~~~ -ChoosePDFActivity allows the user to navigate local disc directories and view a -list of loadable files, from which one can be chosen. It derives off -ListActivity, and so displays the files in a standard ListView. ChoosePDFItem -represents the various types of list entry: up-one, directory or file. -ChoosePDFAdapter populates the list view. - -OutlineActivity -~~~~~~~~~~~~~~~ -OutlineActivity displays a PDF document's outline as a list of selectable -section titles. OutlineActivityData represents the current state of the -activity. OutlineItem represents the individual items, and OutlineAdapter -populates the list view. - -PrintDialogActivity -~~~~~~~~~~~~~~~~~~~ -This activity allows the user to print documents via Google Cloud Print. - -Copied system classes -~~~~~~~~~~~~~~~~~~~~~ -AsyncTask has had improvements made to it since issuing at the lowest android -API level we support, and so we include the improved version as part of the -MuPDF app. We also include Deque and ArrayDeque, which are used my AsyncTask. |