Textscape, LLC v. Google, Inc.

Filing 51

First MOTION for Summary Judgment of Invalidity filed by Google, Inc.. Motion Hearing set for 7/30/2010 09:00 AM in Courtroom 3, 5th Floor, San Jose. (Attachments: # 1 Affidavit, # 2 Exhibit, # 3 Exhibit, # 4 Exhibit, # 5 Exhibit, # 6 Exhibit, # 7 Exhibit, # 8 Exhibit, # 9 Exhibit, # 10 Exhibit, # 11 Proposed Order)(Ezgar, Geoffrey) (Filed on 6/16/2010)

Download PDF
GOOGLE INC.'S MOTION FOR SUMMARY JUDGMENT OF INVALIDITY OF CLAIM 1 OF U.S. PATENT NO. 5,713,740 Exhibit F . . . Label Area '--. .. .... . - . . . ._. , .- -. . .. . ..,.., ,.. ' ? PATENT MICO: 015 C/COMPUTER .---------- DISPLAY UNIT AND METHOD OF OPERATING SAME .I - ---- --5 ' By: David A . Wroblewski W i l l C. Hill Timothy P. McCandless Dumber B 264'108 7 3 5 Dateof Deponit MeV 1 4 1990 I hereby certify that this paper o fee i s being deposited with r the United States Postal Service "Expresa Mail Post Office t o Addressee" service under 37 CFR I . 10 on the date indicated above and is addressed to the Commissioner of Patents and Trademarks, Washington. D.C. 2023 I . 'L. .. . , .. .. . i e- ' -.- . -'".__ 5 portion of- the disclosure of this patent document contains material which is subject to copyright protection. .A The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. A BACKGROUND OF THE INVENTION 10 . 15 20 25 30 The invention generally relates to computer displays and methods of operating computer displays and, more particularly, to displays including a data display region used to display a portion of a stored data file, and a scroll bar display region used to display a scroll bar and to display locations of significant data attributes within the stored data file. Presently, scroll bars occupy a scroll bar display region or window and allocate a long rectangle of pixels, typically called a shaft, to represent the extent of a stored data file, for example a document. Such scroll bars provide one car, which is a colored or shaded sub-rectangle located within the shaft, and which corresponds to the portion of the data file which is presently being displayed in a data display region or field of the display screen. When the car is moved through the shaft, the data display field is updated to display the data file contents corresponding to the new position of the car. Thus, ordinary scroll bars indicate a single feature of the display, i.e., which portion of the data file is presently being displayed. Other than the relative length of the entire data file, represented by the relative sizes of the shaft and car, no other file-specific information is displayed. 2 .. -. SUMMARY OF THE INVENTION 5 10 15 20 25 30 The present invention significantly extends the function of scroll bars by superimposing a map of the positions of significant attributes within a stored data file in the scroll bar field of the display screen, while simultaneously highlighting those significant attributes in the visible portion of the data file. The attribute maps are displayed in addition to the scroll bar. The significant attribute maps are displayed in the scroll bar field by putting appropriate regions of the scroll bar shaft in a contrasting color or shade, which serves to draw a user's attention. With the attribute enhanced scroll bar of the present invention, a user can determine the distributidn of significant attributes in the space defined by the stored data file, and can determine the existence of significant data attributes outside of the visible portion of the data file presently being displayed in the data display field of the screen. Examples of significant data attributes include words or phrases within a document, and information about the time of character input, time of editing, an indication of the document author, or any other document specific information. In addition, the attribute-enhanced scroll bar of the present invention can be displayed independent of the underlying data file, and will serve to recall attributes of the file, the state of the task for which the file exists, and will allow the file to be easily opened to a desired place. As a result, significant task-specific attributes of the data file being displayed are visually indexed against a scroll bar, which allows users to navigate easily through the file. 3 . BRIEF DESCRIPTION OF THE DRAWINGS 5 10 15 Fig. 1 is an illustration of a display screen with an attribute-enhanced scroll bar according to the present invention; Fig. 2 is an illustration of a display screen with two attribute-enhanced scroll bars according to another embodiment of the present invention; Fig. 3 is a more detailed illustration of an attributeenhanced scroll bar according to the present invention wherein different attributes are simultaneously displayed; Fig. 4 is a flow diagram illustrating the operation of the invention; and Fig. 5 is a diagram of a computer system illustrating use of the attribute-enhanced scroll bar of the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 25 30 35 Referring to Fig. 1, a computer display screen is shown illustrating an embodiment of the present invention. Display screen 11 is divided into several display fields or windows 12, 13, 14 and 15. Display field 12 is used to display a selected portion of a stored data file, for example, a document. The file used for illustrative purposes in Fig. 1 is a computer program. Display fields 14 and 15 can be used, for example, to display identifying data relating to the data file being displayed, type fonts, and format data such as margins, tabs, and the like. Display field 13 is an attribute-enhanced scroll bar according to the present invention. Display field 13 includes a substantially rectangular region, or shaft 16, and a shaded rectangular region, or car 17. The length of shaft 16 is representative of the length of the data file, a portion of which is displayed in field 12. The position of car 17 within 4 ..... . 5 10 15 20 shaft 16 is indicat-ive of the position of the portion of the data file displayed in field 12 relative to the entire length of the data file. Thus, in Fig. 1, the spatial relationship between and relative sizes of shaft 16 and car 17 indicate that the portion of the data file displayed in display field 12 is the fourth page of a 13-page document. In addition, the size of car 17 relative to shaft 16 is indicative of the length of the page displayed in field 12 relative to the length of the entire data file. A l s o displayed in shaft 16 are attribute maps including indicia 18 and 19. Attribute indicia 18 and 19 indicate the position of significant attributes within the data file represented by shaft 16. In Fig. 1, three attribute maps are displayed within shaft 16. The first attribute map is empty,and no indicia therefor are included in shaft 16. The second attribute map includes indicia 18, and in the illustration of Fig. 1, indicates the locations of the character string rristrr within the data file represented by shaft 16. Also displayed is a third attribute map which includes single indicium 19. In the example of Fig. 1, the third attribute map indicates the location of the lines within the data file represented by shaft 16, which were changed since the last time the data file was saved. ' 25 30 In addition to displaying attribute maps within shaft 16, the individual attributes are simultaneously highlighted within the portion of the data file displayed in field 12. In the occurs three example of Fig. 1, the character string Iristrl times in the portion displayed in field 12, the occurrences of which correspond to the three indicia 18 contained within car 17. The vertical positions of indicia 18 within car 17 correspond to the vertical positions of the character strings highlighted in the portion of the data file displayed in field 12. 35 Included in display field 15 is a data field identifying the three scroll maps appearing in shaft 16. 5 5 10 15 I 20 * It should' be -emphasized that more or less than three scroll maps can be included within shaft 16, and that*different types of indicia can be used to indicate the location of the mapped data attributes. For example, different shades or colors can be used within a scroll map to identify different types of data within a given map. Then, if a stored document is authored by several different authors, the indicia in a corresponding attribute map could have a different color, or gray shade, assigned to each different author. Another example would be to assign different gray shades or colors to different times of editorial revisions of the data file. Portions of the data file recently added or edited would result in indicia of one shade or color while editorial editions or revisions of later vintage would bear different shades or colors throughout the spectrum. In addition, as illustrated in Fig. 2 , more than one scroll bar field can be included, for example, a vertical scroll bar. field including shaft 16 and car 17, and a horizontal scroll bar field including shaft 16a and car 17a. As in Fig. 1, the position of car 17 relative to shaft 16 indicates the vertical position within the data file of the portion displayed in field 12, and the vertical positions of the indicia of the attribute maps within shaft 16 indicate the vertical location of the relevant data attributes within the displayed file. Similarly, the position of car 17a within shaft 16a indicates the horizontal position within the data file of the portion displayed in field 12, and the horizontal positions of the indicia of the attribute maps within shaft 16a indicate the horizontal location of the relevant attributes within the displayed file. Fig. 3 illustrates an enhanced scroll bar according to the present invention including four attribute maps. Shaft 16 includes car 17 and they function together as described above. The first attribute map includes indicia 2 3 , the second attribute map includes indicia 2 4 , the third attribute map 6 c c .... . . .- - 5 10 15 I * includes indicia 26 and 26a, and the fourth attribute map includes indicia 27. As above, the positions of the respective indicia along shaft 16 are indicative of the positions of the relevant attributes within the data file represented by the length of shaft 16. As shown, the colors or shades used for the indicia can change from map to map, as illustrated by indicia 23, 24 and 26, and the colors or shades of the indicia can change within a single map, as illustrated by indicia 26 and 26a. In addition, the shape of the indicia can change as is illustrated by the rectangular shapes of indicia 23, 24 and 26, and the line-shape of indicia 27. Line-shaped indicia 27 can be used, for example, to indicate the separations between different sections or chapters of a document. Thus, the different shapes, sizes, shades and/or colors of the attribute indicia can be used to distinguish different attribute maps, or to distinguish attributes within the same map, or both. Fig. 3 illustrates how a significant amount of information can be obtained about a data file by viewing the featural representation of the data file offered by the enhanced scroll bar alone. Fig. 4 shows the flow diagram of the present invention. Initially, at the beginning of the process indicated by start block 31, the elevator shaft or shafts for the scroll bar field are drawn on the screen in block 32. Then, in decision block 33, it is determined whether any scroll maps remain to be formatted and displayed. If so, the number of the scroll map is determined in block 34, and the intervals (i.e., start point and end point) of the desired attribute within the relevant scroll map are determined and plotted in the loop including decision block 36 and operation blocks 37 and 3 8 . In decision block 36, it is determined whether any intervals remain to be plotted in the particular map under consideration. If so, operation block 3 7 determines the next interval within the map, and block 3 8 plots that interval on the shaft. 7 5 10 15 ' b.cp- ,& 25 30 When decision block 36 determines that the l s & at within a particular map has been plotted, control is returned to decision block 3 3 where it is determined whether additional scroll maps remain to be plotted. Once all scroll maps have been plotted, control is transferred to block 39 where the car or cars are drawn within the shaft. The procedure is then terminated. Referring to Fig. 5, to use the attribute enhanced scroll bar of the present invention, a computer system, which includes a central processing unit (CPU) 4 0 , first loads the enhanced scroll bar algorithm of the present invention into memory 41 from program storage medium 42. The enhanced scroll bar algorithm is diagrammed in Fig. 4, and is shown in detail in the program listing-'below. Program storage medium 42 can be any machine readable storage medium such as, for example, a floppy or hard magnetic or optical disk, or a programmable - - k--?ead-only memory. Display 11, including data display field 12 and scroll$field 13, is connected in a known manner through display control bus 43, display interface 44 and internal data/address bus 46 to CPU 40. & The computer system can be any computer and hardware A display, preferably capable of displaying bit mapped graphics. In the preferred embodiment, the Symbolics 3600-family computers in the Genera software environment are used. These work stations are publicly available from the Symbolics Corporation. However, it will be understood that the particular hardware used can be of any type. Virtually any work station in the computer marketplace which bundles software for windowbased interfaces, or which has independent vendors of such software, would be acceptable. For example, acceptable alternatives include computer systems manufactured by IBM, all IBM PC compatibles, Apple MacIntosh, Microsoft, Next, DEC, Sun Microsystems, and others. 8 . .. The enhan'ced scroll bar routine of the present invention is shown in the program listing that follows. The program is written in LISP language for the Symbolics 3600-family computers in the Genera software environment. Versions for other computers are readily producible by practitioners skilled in the art. 5 .... 0.. `-1 .., . ,... __I . .. - . .".... , . , .. . . . . ... -*- Mode: LISP: S y n t a x : Common-lisp: P a c k a g e : DYNAMIC-WINDOWS: B a s e : 10: -*- C o p y r i g h t 1 9 9 0 M i c r o e l e c t r o n i c s And Computer T e c h n o l o g y C o r p o r a t i o n . All R i g h t s R e s e r v e d . S h a r e h o l d e r s o f MCC may r e p r o d u c e and d i s t r i b u t e t h i s m a t e r i a l f o r i n t e r n a l p u r p o s e s by r e t a i n i n g MCC's c o p y r i g h t n o t i c e and p r o p r i e t a r y l e g e n d s and m a r k i n g s on a l l c o m p l e t e and p a r t i a l c o p i e s . ACA C o n f i d e n t i a l and P r o p r i e t a r y . T h i s f i l e d e f i n e s the a s t r u c t u r e c a l l e d a "map" and a n e w k i n d o f scroll b a r t h a t h i g h l i g h t s t h e i n t e r v a l s o f the map i n s i d e t h e normal i m a g e o f a s c r o l l b a r . T h e map i s d e f i n e d by t h e f l a v o r b a s i c - s c r o l l - m a p . T h e m o s t common u s e of maps w i l l be t h e f l a v o r b i n a r y - s c r o l l - m a p , which d e f i n e s a set o f i n t e r v a l s o v e r w h i c h some a t t r i b u t e i s c o n s i d e r e d t o h a v e t h e b i n a r y v a l u e "1"; a l l o t h e r i n t e r v a l s a r e c o n s i d e r e d t o h a v e t h e b i n a r y v a l u e "0". The map d o e s n o t commit t o t h e m e a n i n g o f the i n t e r v a l s , so the i m p l e m e n t a t i o n c o u l d be u s e d f o r many t h i n g s , s u c h a s f i n d i n g t h e h i t s i n the t e x t u a l s e a r c h o f a b u f f e r , or f o r f i n d i n g t h e i m p o r t a n t r e g i o n s i n a d i s p l a y o f g s o g r a p h i c i n f o r m a t i o n . T h e scroll b a r i s d e f i n e d a s f l a v o r a t t r i b u t e - m a p p e d - s c r o l l - b a r . I t i s b a s e d on the f l a v o r margin-scroll-bar, d e f i n e d by S y m b o l i c s , and o n l y a d d s t h e a d d i t i o n a l f u n c t i o n a l i t y n e e d e d t o o v e r l a y t h e maps on t h e normal scroll b a r . For t h e scroll b a r d r a w i n g r o u t i n e s , t h i s r e q u i r e d a n e x t e n s i v e r e w r i t e b e c a u s e the image the s c r o l l b a r s h a f t c a n now be more e x p e n s i v e t o compute t h a n a n o r d i n a r y s c r o l l b a r ; therefore w e c a c h e t h e b i t - i m a g e o f f s c r e e n and r e c o m p u t e i t o n l y when n e c c e s a r y . ............................................................................. ... ,,. ... ,,, ,,, ( d e f v a r *White-Pattern* ( t v : m a k e - g r a y 2 2 Coo0 # o O O ) ) ( d e f v a r *Black-Pattern* ( t v : m a k e - g r a y 2 2 Boll Coll)) T h e s e scroll b a r s w i l l l o o k a t these v a r i a b l e s t o see how t h e y s h o u l d f i l l t h e i r p a r t s . ... ... ... ,,, ( d e f v a r *Elevator-Car-Gray* ( d e f v a r *Elevator-shaft-gray* ( d ef v a r *Elevat or-End-Gray* t v : 33%-gray) *white-pattern*) *white-pattern*) ,,, BASIC-SCROLL-MAP ;:: T h e b a s e f l a v o r o f f o f which a l l s c r o l l map f l a v o r s o u g h t t o be b u i l t . ::: T h i s i s an a b s t r a c t f l a v o r and s h o u l d n o t be i n s t a n t i a t e d . ,,, ... ( d e f f l a v o r Basic-Scroll-Map 0 0 ... ... ... ... ,,, ... ,,, ::; .. .. .. ,. .. ,, .. .. ,, .. .. .. ,, .. ,, .. ,, **, *e, e,, e, ,I I. .I ... ,.. ... *#, ... ) E I N A R Y-SCROLL-MAP ,,, ::: T h i s s t r u c t u r e r e p r e s e n t s a map o f i n t e r v a l s i n a d o c u m e n t . I n t e r v a l s r e p r e s e n t e d p a s s some t h r e s h o l d o f i n t e r e s t i n some a l o n g some f e a t u r e , a l t h o u g h i t d o e s n ' t m a t t e r t h a t t h a t f e a t u r e i s . These maps a r e " b i n a r y " b e c a u s e t h e y d o n ' t a l l o w for d e g r e e e s o f s t r e n g t h i n each i n t e r v a l . Each i n t e r v a l i s 1 0 0 % " o n " , e a c h a r e a n o t i n c l u d e d i n a n i n t e r v a l i s 100% " o f f " . Clients o f this s t r u c t u r e o n l y know t h a t t h e y c a n a s k t o map o v e r e a c h i n t e r v a l i n t u r n and d o s o m e t h i n g . They d o n o t know whether i t i s computed o n t h e f l y o r p r e c o m p u t e d and c a c h e d (which i t i s u s u a l l y ) . T h e r e p r e s e n t a t i o n of i n t e r v a l s s t o r e d i n a map i s d e f i n e d b y t h e c r e a t o r of t h e map, who s u p p l i e s a f u n c t i o n t o r e t r i e v e t h e s t a r t - p o i n t and e n d - p o i n t f o r e a c h e l e m e n t i n t h e set o f i n t e r v a l s . For i n s t a n c e , t h e d e g e n e r a t e c a s e i s where e a c h i n t e r v a l i s r e p r e s e n t e d by a s i n g l e number, and t h e a c c e s s o r for the s t a r t and Another r e p r e s e n t a t i o n might use a end p o i n t s i s # ' i d e n t i t y . d o t t e d p a i r t o r e p r e s e n t t h e i n t e r v a l , and t h e a c c e s s o r s would be # ' c a r and # ' c d r . S t i l l a n o t h e r m i g h t u s e ZWEI d a t a s t r u c t u r e t o r e p r e sent t h e i n t e r v a 1s . C o n s u m e r s o f a map a r e a l l o w e d t o a p p l y a f u n c t i o n t o e a c h of t h e i n t e r v a l s i n the map. T h e f u n c t i o n (MAP-SCROLL-EL3p <map> < f u n c t i o n > ) e, ,,, ... ,.. ... .,' ,.. ... ... c applies <function> to each Interv_a_l_ <map>. <function> should in take three arguments: (1) the interval datastructure itself (2) the start point, and (3) the end point. One o f these is given to scroll bars so they know where the interesting points in the document are. The functions that can be called on scroll maps a r e : MAKE-INSTANCE normal flavor object maker, allows the following init keywords. :CACHE The values t o store in the map. This 1 s a list of datastructures representing intervals, whose actual implementation is up to the caller. :STARTPOINT-ACCESSOR A function to apply t o members of the cache to get the startpoint of the interval. :ENDPOINT-ACCESSOR A function to apply to members of the cache to get the endpoint of the interval. :PRINTABLE-KEY A string that can be printed indicating the contents of the map. This is reflected in the mouse documentation line. MAP-SCROLL--MAP - scroll -map function 'Applies <function> (a 3-arg function) to each point in the scroll map. <function> takes the interval, its startpoint, and its endpoint as argument. Its return value is ignored. SCROLL-MAP-LENGTH scroll-map Returns an integer. SCROLL -MAP -PR IN TABLE-KE Y s crol 1 -map Returns a string, or NIL if no printable key i s available. (defflavor Binary-Scroll-Map nil) {(cache (startpoint-accessor C ' identity) (endpoint-accessor #'identity) (printable-key nil)) (basic-scroll-map) :initable-instance-variables :readable-instance-variables :writable-instance-variables { :conc-name "SCROLL-MAP-") ) (defmethod (Map-SCrOll-tNIp Binary-scroll-map) (function) (dolist (interval cache) (funcall function interval (funcall startpoint-accessor interval) (funcall endpoint-accessor interval 1))) (defmethod (Scroll-Map-Length Binary-scroll-map) (length cache) ) (defmethod (Scroll-Map-Empty? Binary-Scroll-Map) (null cache)) () () .-. . .. ,... . .. . .-. . .. . ATTRIBUTE-MAPPED-SCROLL-BAR T h i s i s t h e scroll b a r d e f i n i t i o n i t s e l f . N o t e t h a t the f l a v o r i s b a s e d o n m a r g i n - s c r o l l - b a r , which m e a n s w e i n h e r i t a l l t h e normal scroll b a r f u n c t i o n a l i t y f r o m t h e S y m b o l i c s i m p l e m e n t a t i o n o f scroll b a r s . However, a t t r i b u t e - m a p p e d scroll b a r s h a v e some a d d i t i o n a l s t a t e v a r i a b l e s , a s d e s c r i b e d below, and m u s t r e d e f i n e t h e d r a w i n g r o u t i n e s t o add t h e maps when r e q u i r e d . --- Map Management I n s t a n c e V a r i a b l e s Attribute-mapped-scroll-bars c a n d i s p l a y m u l t i p l e maps. The scroll b a r a s s i g n s e a c h map a symbolic name, a n d a l s o r e c o r d s the o r d e r i n w h i c h t o d i s p l a y t h e scroll bars. a l i s t o f symbols, i n d i c a t i n g t h e o u t s i d e - t o - i n s i d e o r d e r i n map-order which t o d r a w t h e m a p s . The f i r s t map w i l l be draw c l o s e r t o t h e o u t s i d e o f t h e s c r o l l b a r , and t h e l a s t o n e w i l l be drawn closer t o t h e i n s i d e o f t h e scroll b a r . --- - named-maps - a n a l i s t whose e l e m e n t a r e o f t h e f o r m (<name> . <map>) where <name> i s a n e l e m e n t o f the map-order l i s t , and <map> i s a scroll map a s d e f i n e d a b o v e . U s e t h i s l i s t t o f i n d what a c t u a l map c o r r e s p o n d s t o a l o g i c a l name. overlay-maps - normally, s c r o l l maps a r e draw s i d e - b y - s i d e w i t h i n t h e s h a f t o f scroll b a r . T h i s i s n ' t t h e only way t o compose t h e m , h o w e v e r . I t i s a l l o w a b l e t o mark c e r t a i n maps a s " o v e r l a y " maps, and t h e y w i l l t a k e up e n t i r e w i d t h o f t h e scroll b a r w h e n draw, r a t h e r t h a n - . s p l i t i n g u p s p a c e w i t h t h e o t h e r maps. On a c o l o r d i s p l a y , o n e c o u l d h a v e o v e r l a y maps I n o n e color and t h e n o r m a l m a p s i n a n o t h e r , and i n t h i s way h a v e more maps d i s p l a y e d . Drawing O p t i m i z a t i o n I n s t a n c e V a r i a b l e s The most s t r a i g h f o r w a r d implementation o f attribute-mapped-scroll-bars has p o o r p e r f o r m a n c e c h a r a c t e r i s t i c s . b e c a u s e i t redraws the e n t i r e s c r o l l b a r T h i s implementation e a c h t i m e t h e p o s i t i o n o f the e l e v a t o r c a r is u p d a t e d . t r i e s t o g e t b e t t e r p e r f o r m a n c e by c o m p u t i n g a n o f f - s c r e e n b i t m a p c o n t a i n i n g T h a t i s . t h e e n d s o f t h e scroll b a r , " b a c k g r o u n d i m a g e " o f t h e scroll b a r . e m p t y s h a f t . and t h e m a r k i n g s f o r t h e v a r i o u s s c r o l l maps known. Once c o m p u t e d , t h e b a c k g r o u n d i m a g e c a n be p e r i o d i c a l l y u p d a t e d when f r e e cycles a r e a v a i l a b l e . T h e s c r o l l b a r i s d r a w b y f i r s t b i t b l t - i n g t h e b a c k g r o u n d i m a g e o n t o t h e screen, then s u p e r i m p o s i n g the e l e v a t o r c a r r e c t a n g l e o n t o t h a t i m a g e . I f the s c r o l l h a s a l r e a d y b e e n drawn, o n l y the c a r n e e d s t o move, t h e n w e e r a s e t h e e l e v a t o r c a r (by b i t b l t i n g t h e a p p r o p r i a t e s u b r e c t a n g l e of t h e b a c k g r o u n d i m a g e b a c k o n t o t h e screen) and r e d r a w t h e e l e v a t o r c a r i n t h e n e w p o s i t i o n . image-tick image-cache --- --- - a b o o l e a n . i n d i c a t i n g w h e t h e r the c o n t e n t s o f t h e image-cache a r e o u t of d a t e , and s h o u l d be r e c o m p u t e d . - the o f f - s c r e e n b i t m a p c o n t a i n i n g the image o f the e l e v a t o r s h a f t , t h e e l e v a t o r e n d s , and t h e scroll maps a s s o c i a t e d w i t h t h e scroll b a r . T h i s c a n be marked a s i n v a l i d b y s e t t i n g t h e image-tick instance variable t o T. ( D e f f l a v o r Attribute-Mapped-Scroll-Bar ( (map-order nil) (named-maps nil) {overlayed-maps nil) (image-t i c k t) (image-cache n i l )1 (margin-scroll-bar) :initable-instance-variables :r e a d a b l e - i n s t a n c e - v a r i a b l e s ) - ( D e f m e t h o d (Get-Named-Scroll-Map ;; Returns the scroll map indicated or the default value. ;; <name> is typically a keyword symbol. ( S c 1 : G e t f Named-Maps Name D e f a u l t ) ) Attribute-Mapped-Scroll-Bar) (Name & O p t i o n a l ( D e f a u l t N i l ) ) (Defmethod (Set-Named-Scroll-Map T )) ;; Sets the Attribute-Mapped-Scroll-Bar) (Name Map & O p t i o n a l (Error-If-Unknown-Name scroll bar map named <name> to be the new map. Name) ( U n l e s s (Or (Member Name Map-Order) ( N u l l M a p ) ) ( I f Error-If-Unknown-Name (Error " T h e map named - s i s n o t d e f i n e d i n t h i s s c r o l l b a r . " 42 '3 (Setf Map-Order (Ncbnc Map-Order (Setf (Sc1:Getf Named-Maps Name) Map) 1 (List Name) ) ))) (Defmethod (Set-Map-Order Attribute-Mapped-Scroll-Bar) ;; Sets the order of maps b those idicated. ;; Each element of listof-map-names can be either a symbol or ;; This initializes the variables overlay-maps and map-order. , (List-Of-Map-Names) a list of the form (:overlay eymbol>). (Setf Overlayed-Maps N i l 1 (Mapcar 8' (Lambda (E) (When (Listp E) (Push (Second E) Overlayed-Maps) 1 ) List-Of-Map-Names) ' (Setf Map-Order (Mapcar Q (Lambda (E1 (If (Atom E) E (Second El ) ) List-Of-Map-Names) ) ) () (Defmethod (Get-HapOrdet Attribute-Mapped-Scroll-Bar) ;; Returns the order of displayed maps. (Copy-List Map-Order) ) (defmethod (Ensure-Image-Cache Attribute-mapped-scroll-bar) () ;;This makes sure the image-cache state variable is filled with an appropriate bit array. ;:Sometimes this gets called when window-range is NIL. Then it should do nothing (When Window-Range (Labels ( ( $ Image-Cache-Dims (Height1 (Ecase (Scroll-Bar-Margin) ( (:Left :Right) (Values Height (Tv:Round-Up Elevator-Thickness 32) ) ) ((:Top :Bottom) (Values Elevator-Thickness (Tv:Round-Up Height 32)))))) (Or Image-Cache (Multiple-Value-Bind ( D 1 D2) ($Image-Cache-Dims (Range-Size Window-Range)) (Setf Image-Cache (Make-Array (List D1 D2) :Element-Type 'Bit) ) ) ) ) ) ) (defmethod (Orientation Attribute-mapped-scroll-bar) ;; Returns ... (cond ((member (scroll-bar-margin) ' (:left :right)) :vertical) ((member (scroll-bar-margin) ' (:top :bottom)) :horizontal))) (Map Avail-Range Array Band-Start Band-End &optiona (alu :horizontal or xerticai (1 (Defmethod {Draw-Scroll-Map-In-Band Attribute-mapped-scroll-bar) tv: alu-seta) ) (Let* ( (Bar-Top (Bar-Bottom (Bar-Length Elevator-Thickness) ;start of shaft proper past end targets ( - ( - (Range-Max Window-Range) (Range-Min Window-Range)) Elevator-Thickness) (- Bar-Bottom Bar-Top) I (F ( / Bar-Length Avail-Range)) (Orientation (Orientation Self) 1 ) (Map-Scroll-Map Map # ' (Lambda (Interval Startpoint Endpoint) (Declare (Ignore Interval) ) (Let ( (Start-Line (max bar-top ( + (Floor ( * Startpoint F ) ) Bar-Top) ) ) (End-Line (min bar-bottom (+ (Ceilina ( * Endpoint F) ) Bar-Top) 1 ) 1 (Loop F o r I From Start-Line To End-Line Do (Ecase Orientation (Tv:%Draw-Line Band-Start I Band-End I Alu T Array)) (:Vertical (:Horizontal (Tv:%Draw-Line I Band-Start I Band-End A l u T Array)) (defvar *Map-Spacing* 1) (defun ;; Given a width for the elevator, and the number of maps to display, this ;; function computes the pixel-widththat each aaibute map will occupy. ;; It returns an integer. (setf elevator-width ( - elevator-width 2) ) ; subtract off outer edges. (floor ( - elevator-width ( * (1+ number-of-maps) *map-spacing*)) Compute-Map-Width (elevator-width number-of-maps) number-of-maps) (defmethod (Draw-Scroll-Maps-On-Array Attribute-mapped-scroll-bar) (avail-range array &optional (alu tv:a lu-seta) ) (declate (ignore alu) ) (let ( (n-split-maps ( - (length map-order) (length overlayed-maps) ) ) ) ;number of maps tosplit Space among... (cond ((zerop n-split-maps) ;;All the maps are overlays ))I (loop for m in map-order for real-map = (get-named-scroll-map self m) when real-map do (draw-scroll-map-in-band self real-map avail-range array 2 ( - elevator-thickness 3) (t ;;There is a mixture of overlays and splits. (let* ( (current-band-start 21 (map-width (compute-map-width elevator-thickness n-split-maps)) '. . (band-inc ( + map-width *map-spacing*))) (loop for m in map-order for teal-map = (get-named-scroll-map self m) when real-map do (if (member m overlayed-maps) (draw-scroll-map-in-band self real-map avail-range array 2 9 s 3)) . - _- (- elevator-thickne map-width -1 1) (draw-scroll-map-in-band self real-map avail-range array current-band-start ( + current-band-start (incf current-band-start band-inc) ) else do (incf current-band-start band-inc))))))) (defmethod (Compute-%-Imago Attributa-mapped-scroll-bar) (ensure-image-cache self) (let ((orientation (orientation self)) (end-size elevat or-thickness) (window-min (ringe-min window-range) ) (window-max (range-max window-range))] (labels ((rectangle (width height x y temp) (when (and (plusp width) (plusp height)) (ecase orientation (:vertical (%draw-rectangle width height x y boole-ior temp)) (:horizontal (%draw-rectangle height width y x boole-ior temp))))) (bblt (width height x y pattern phase temp &optional (alu boole-ior)) (when (and (plusp width) (plusp height)) (ecase orientation (bitblt alu width height pattern 0 phase temp x y)) (:vertical (:horizontal (bitblt alu height width pattern phase 0 temp y x))))) (a-box (begin end edge-thickness fill-pattern fill-phase temp) (rectangle elevator-thickness edge-thickness 0 begin temp) (rectangle elevator-thickness edge-thickness 0 ( - end edge-thickness) temp) (rectangle edge-thickness ( - ( - end begin) ( * edge-thickness 2) ) 0 (+ begin edge-thickness 1 temp) (rectangle edge-thickness ( - ( - end begin) ( * edge-thickness 2)) ( - (+ 0 elevator-thicknes s } edge- thickness ) (+ begin edge-thickness) temp) (when fill-pattern (bblt (- elevator-thickness ( * edge-thickness 2)) ( - ( - end begin) ( * edge-thickness 2)) (+ 0 edge-thickness) ( + begin edge-thickness) fill-pattern (+ fill-phase edge-thic kness) temp) ) ) (draw-cable (begin end phase temp) (let ( (shaft-gray *black-pattern*)) (bblt *elevator-cable-thickness* ( - end begin) 0 begin shaft-gray phase temp) (bblt *elevator-cable-thickness* ( - end begin) (1- elevator-thickness) begin shaft-gray phase temp) (bblt (- elevator-thickness *elevator-cable-thickness* *elevator-cable-th~ckness*l ( - en d begin) 1 begin *elevator-shaft-gray* phase temp) 1)) ;; Clear the whole ;; === 1. ;;This draws a new version of the scroll bar background (Le. the top, bottom, and shaft without the elevator ;;into the bit array h w n as 'image-cache", which is stored in an instance variable of the scroll bar. (window) car thing (bblt elevator-thickness Draw the top and bottom targets (- window-max window-min) 0 0 *white-pattern* 0 image-cache tv:alu-seta) (a-box 0 end-size *elevator-box-thickness* *elevator-end-gray* 0 image-cache) (a-box I- I- window-max window-min) end-size) (- window-max window-min) *elevator-box-thickness* *elevator-end-gray* 0 image-cache) :;===2. DrawthecaMes (draw-cable end-size ( - ( - window-max window-min) end-size) 0 image-cache) (multiple-value-bind (nil nil min-avail max-avail) (send window :y-scroll-position) (braw-scroll-maps-on-array self ( - max-avail min-avail) image-cache)) r. .. ,, :; image tick i s T if the bg image has 'never* been drawn, and NIL if it has even ever h e n drawn once. ;;This is to help avoid the problem of existing scroll bars not knowing about the bg-image-cache. .. (setf image-tick nil)))) (defmethod (Redraw-Elevator-Special Attribute-mapped-scroll-bar) (window force &dux (orientation (orienta tion self))) (tv:prepare-sheet (window) (multiple-value-bind (1 tp) (margin-component-edges self window) (multiple-value-bind (min-vis total-vis min-avail max-avail) (ecase orientation (:horizontal (send window :x-scroll- position) position) 1 (let* ( (:vertical (send window :y-scroll- (displayed-min (range-min displayed-range) ) (displayed-max (range-max displayed-range)) (window-min (range-min window-range)) (window-max (range-max window-range)) (height (range-size window-range)) {width elevator-thickness) ( + m i n - v i s total-vis)) (max-vis (end-size elevator-thickness) (+ 1 shaft-whitespace-thickness) ) (left (top ( + tp shaft-whitespace-thickness) ) ) (multiple-value-bind (elevator-min elevator-max) (stack-let* ((available-range (make-range min-avail max-avail)) (visible-range (make-range min-vis max-vis)) (shaft-range (make-range (min (+ window-min end-size) window-max) (max ( - window-max end-size) window-min)))) (compute-scroll-bar-ends available-range visible-range shaft-range)] ,, .- -- Return immediatelyif no change. (when (and (eql elevator-min displayed-min) (eql elevator-max displayed-max) (return-from redraw-elevator-special)) : ; Draw the n;ain body of the elevator: (cond (force (not force)) -- ;; Draw the whole thing when forced. ow-min n top (ecase orientation (:vertice-l (tv:sheet-draw-1-bit-raster (:horizontal (tv:sheet-draw-1-bit-raster width height image-cache 0 0 nil left wind tv:alu-seta tv:alu-setz window)) height width image-cache 0 0 nil window -mi he tv:alu-seta tv:alu-setz window)) (setf cable-drawn t)) (t ceca se orient at i o n (:vertical (tv:sheet-bitblt tv:alu-seta width (range-size displayed-range) image-cac 0 ( - (range-min displayed-range) window-min) nil left (range-min displayed-range) window)) (tv:sheet-bitblt tv:alu-seta (range-size displayed-range) width image-c ( - (range-min displayed-range) window-min) 0 nil (range-min displayed-range) top window) (:horizontal ache :; Draw the elevator car: (alter-range displayed-range elevator-min elevator-max) (ecase orientat ion ( :vertical ;;left, right, top, --- )I)) bottom (tv:sheet-draw-line ndow) -seta t window) (tv:sheet-draw-line (1+ left) elevator-min (+ left width -1) elevator-min tv:alu-seta t wi (1+ left) (1- elevator-max) ( + left width -1) (1- elevator-max) tv:alu ow 1 eta t window) (tv:sheet-bitblt tv:alu-ior (- width 2 ) (- elevator-max elevator-min 2) *elevator-car-gray* 0 0 nil (1+ left) (1+ elevator-min) window)) ( :horizontal (tv:sheet-draw-line elevator-min (I+ top) elevator-min ( + top width -1) tv:alu-seta t wind (tv:sheet-draw-line (tv:sheet-bitblt (1- elevator-max) (l+ top) (1- elevator-max) (+ top width -1) tv:alu-s (- tv:alu-ior ( - elevator-max elevator-min 2) *elevator-car-gray* 0 0 nil (1+ elevator-min) (1+ top) window)) width 2) 1)))))) (Defmethod (Draw-Elevator-If-Needed Attribute-Mapped-Scroll-Bar) (Window A l u Force) (declare (ignore alu)) (let ((message (ecase (orientation self) (:horizontal :x-scroll-position) (:vertical :y-scroll-position) ) I ) (multiple-value-bind (min-vis tot-vis min-avail max-avail) (send window message) (make-range min-vis ( + min-vis tot-vis))) (stack-let ( ( v i s (avail (make-range min-avail max-avail) I ) (cond ((range-equal vis avail) (margin-component-erase self window) . .. (setf cable-drawn nil)) (t (redraw-elevator-special self window (or force (null cable-drawn) image-tick (null (range-min displayed-range)))))))))) (defmethod (Draw-Elevator-If-Requested Attribute-mapped-scroll-bar) (window alu force) (declare (ignore alu) ) (redraw-elevator-special self window (or force (null cable-drawn) image-tick (null (range-min displayed -range))))) (defmethod (Margin-Scroll-Bar-Draw-Elevator Attribute-Mapped-Sctll-Bar) ;; The main interface to the rest of the Symbolics window system manager is this function. ;; It is called from the operating system when the operating system has determined that the ;; scroll bar ought to be drawn. (window alu &optional force) (unless (eq visibility :suppressed) ;; If we somehow escaped initialization, clean up (unless (and (range-min window-range) (range-max window-range)) (margin-component-after-redefine-margins-kludge self window)) (ensure-image-cache self) ;; Draw the scroll bar, supressing display if it blows out (let-if (eq (cli: :follow-synonym-stream *debug-io*) window) ((*debug-io* "Error drawing scroll bar")) (unless (catch-error-restart (error "Suppress the scroll bar entirely") (catch-error-restart (abort "Skip drawing the scroll bar") ; Main body ; (ecase visibility ( (:normal :temporary-normal) (when image-tick (compute-bg-image self window)) (redraw-elevator-special self window (or force (null cable-drawn) image-t ick (null (range-min displayed-range) ) :if-requested (when image-tick (compute-bg-image self window)) (draw-elevator-if-requested self window alu force)) :if-needed (when image-tick (compute-bg-image self window)) (draw-elevator-if-needed self window alu force))) (setq visibility :suppressed))))) ))) T) 1 (Defmethod (Margin-Component-Change-Of-Size-Or-Margins Attribute-Mapped-Scroll-Bar :After) (Window) (declare (ignore window) ) ;;This method is called whenever the window has been reshaped by the user. The primary ;; method is implemented by dwmargin-scroll-bar,but this :after demon causes the new instance ;;variables for a attribute-mapped-scroll-barto also be reset, causing the scroll bar's image to ;; be recomputed from scratch. (setf image-cache nil ;clear the cache, forcing a new bit-array to be allocated image-tick t) ;set the flag that says 'redraw the image in the cache.' ,,, ... ,,, *** ,,, ................................................................... -- window-level interface ......................................... ,... ,* ---- This code i s the way to tell windows with dw:margin-mixin -,,, . I . , displayed-range) ... . . . - - - - how to add and remove scroll maps to the scroll bars in -. . . -- -- highest margin of functional :top :right :bottom). code the -- -- various level (i.e. :left abstracttion for this It is ,,, .. -... ,,, ----------_---__--_-____________________-------------------------,,, ... (defmethod (Scroll-Bar-In-Margin Dn:Margin-Mixin) (margin) (dolist (component dw::margin-components) (when (and (typep component 'Attribute-mapped-scroll-bar) (or (eq (dw: :margin-scroll-bar-margin component) margin) (and (eq (dw::margin-scroll-bar-margin component) :default) (eq *default-scroll-bar-margin* margin) ) ) ) (return component)))) (defmethod (Get-Named-Scroll-Map-In-Margin Dw:Margin-Mixin) ;; Returns a scroll map if: ;; a) a scroll bar exists in the margin specified ;; b) it has a scroll bar map of the proper name (margin name &dux s) (and (setf s (scroll-bar-in-margin self margin)) (get-named-scroll-map s name))) , .. \ (defmethod (Sat-Namod-Scroll-Map-In-Ma&~n Du:Margin-Mixin) (margin name map &dux s) (if (setf s (scroll-bar-in-margin self margin)) (set-named-scroll-map s name map t ) (cerror "There is no scroll bar in the -s margin." margin)) ) (defmethod (Sat-Scroll-Map-Ordar-In-Margin Dw :Margin-Hixin) (margin list -of-names &aux s) (if (setf s (scroll-bar-in-margin self margin)) (set-map-order s list-of-namea) (cerror "Skip defining these scroll map names and continue." "There is no scroll bar in the -s marg in. margin) ) ) I' (defmethod (Redraw-Scroll-Map-In-Margin Dw:Margin-Mixin) (margin baux s) (When (Setf S (Scroll-Bar-In-Margin Self Margin) ) (Compute-Bg-Image S Self) (Margin-Component-Draw S Self Tv:Alu-Seta))) 5 The foregoing-description of the invention has been directed to a particular preferred embodiment for purposes of explanation and illustration. It will be apparent, however, to those skilled in this art that many modifications, additions and deletions may be made without departing from the essence of the invention. It is the applicants' intention in the following claims to cover all equivalent modifications and variations as fall within the scope of the invention. c WHAT IS CLAIMED IS: -- eract,ve data dsp,ay system where,n a user is data display screen including a data display field and a da croll bar field, said method comprising: aid data display field a portion 0 f . a displaying in s 10 data scroll bar field indicia of a portion within said data file; and croll bar field indicia of a position withi id data file of at least one attribute of said 15 The method of claim 1, further comprising lageling within said data file said at least one attribute. 2. The method of claim 2, wherein said step of displaying said portion fur,ther comprises highlighting all said attributes appearing within said portion. 3. 20 4. The wherein said step of displaying indicia of a horizontal within said data file. a horizontal position of field is indicative at least one attribute 25 5. The within said data file. said step of displaying displaying indicia of a vertical within said data file. 1 7 . 35 The method of indicia within a vertical position of said field is indicative of said ,. -. , .... ._.. . . at least one attribute within said 8. The me im I, wherein said step of displaying rizontal position within said east one attribute; and ical position within said data one attribute. 10 rein said step of displaying displaying a plu scroll bar positional ind data file. The method, attribute maps 10. 20 15 of attribute maps in said data each attribute map including of respective attributes of said said indicia in different from one another. 0, wherein said indicia in different 11. The method maps 25 The method attribute maps 12. said indicia in different The method attribute maps 13. said indicia in different 30 14. The 9, wherein indicia within at least one - The method of claim at least one attribute 15. 35 \a distinguishable from one another. said indicia within said shapes. 20 ' , -.. - .-.-_ _, thod of-claim 10, wherein said indicia within said attribute map are different colors. 17. The meth at least one a 5 f claim 10, wherein said indicia within said bute map are different shades. readable by a machine and representation of a program of to be executed by said machine to y one of claims 1 through 17. tangibly embodyin instructions adapta 10 a memory accessed 15 he central processing unit; tral processing unit, a from the central stored data file in eld of said display of said portion within said d field positional attribute within said stored processing unit; indicia of a posit stored data file; a data file. I 21 ,,e . . :.,. ' '. .. .,. , ..: . . . r . .. . I ....;\*, :. . i .. s . :;. , > . . ' . 1 '. I ABSTRACT .. '~ ' .. . - ., .. _.<. . .: 5 10 An attribute-enhanced scroll bar is presented. A selected . . ..port$pnof a stored data file, for example a document, is displayed in a display field, and a scroll bar field including a scroll bar is used to indicate the position of the displayed portion relative to the entire data file. In addition, maps of significant task-specific attributes of the data file, for example particular character strings within a document, are displayed in the scroll bar field of the display along with the scroll bar. The attribute maps indicate the location of the significant attributes within the data file. In addition, the attributes are highlighted within the portion of the data file that is displayed in the display field. ,: .. ..! .* ! 15 22 .. U . h I i p 3.3 R r L . P 0 h T .. . . .-, . .. . . ... . . ..__ User interface design and analysis is an inherently interdisciplinary activity that merges cognitive, computing, and engineering sciences. Due to the rapid pace of technological change, there is as yet no science of human-computer interaction and little consensus on what the core knowledge of the discipline should be. In other ent of taxonomies, of living organisms to be a useful foun- - a model of the basic components of the interface and coverage of some of the major cognitive engineering principles that form the basis for human-computer interaction. S J .2 L Draw elevator shaft ( 9 " / &P next ~ ~ = in m WQI I I [Draw elevator I t 37 car I ccq elevator shaft I STORAGE -- MEMORY I t 4 I I

Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.


Why Is My Information Online?