throbber
Accepted for CHI '86: Conference on Human
`Factors in Computing Systems (April 1986)
`
`An Input-Output Model for Interactive Systems
`
`Mary Shaw
`
`Computer Science Department
`and
`Software Engineering Institute
`Carnegie-Mellon University
`Pittsburgh, Pa 15213 USA
`
`Abstract: Interactive user interfaces depend critically
`on underlying computing system facilities for input and
`output. However, most computing systems still have
`input-output facilities designed for batch processing.
`These facilities are not adequate for interfaces that rely
`on graphical output, interactive input, or software con-
`structed with modem methodologies. This paper details
`the deficiencies of batch-style input-output for modem in-
`teractive systems, presents a new model for input-output
`that overcomes
`these deficiencies, and suggests
`software organizations to take advantage of the new
`model.
`
`1. Introduction
`Input and output are perhaps the most systematically
`neglected features of programming languages. They are
`usually ad hoc, and they are usually poorly integrated
`with the other facilities of their hosts -- the languages in
`which they are embedded.
`Input and output are
`generally supported only for the primitive scalar types of
`the host languages, although they are occasionally sup-
`ported (though usually in an inflexible way) for nonscalars
`such as records and arrays.
`The situation was bad enough before the introduction
`of abstract data types and interactive graphic displays,
`but these additional complications have overburdened
`the classical ad hoc input and output mechanisms
`beyond their design limitations. It Is now time to develop
`a sound model for input and output that will address the
`problems introduced by modem programming technol-
`ogy. Such a model will help to put classical input and
`output on a solid footing; It will also provide a basis for
`abstract data types and interactive systems.
`Interactive input and output are fundamentally dif-
`ferent from conventional implementations of input and
`output in two ways:
`
`• The output device serves as a continuous sensor
`or observer of the application software and
`provides current information about the state of the
`computation, whereas conventional input and out-
`put provides information to the human user only
`when the application software chooses to report.
`• Input is an interactive process requiring feedback
`(sometimes from the application software that will
`receive the input), whereas input is conventionally
`treated as a simple parsing task. Moreover, inter-
`active Input is often under control of the human
`user rather than the program, yielding an event-
`driven system rather than a program-driven one.
`The model developed here explains both conventional
`input-output and the newer, event-driven view of inter-
`action.
`This paper begins by suggesting an informal model of
`input and output that explains classical -- that is, batch-
`It then describes the
`input and output.
`oriented —
`problems introduced by modern programming technology
`and extends the model to deal with them. The paper
`closes with some remarks on experience with software
`organizations to support the model.
`
`2. Classical Input and Output
`Input and output facilities in programming languages
`are responsible for receiving input data from the external
`In
`world and for returning output to the external world.
`order to do this, these mechanisms must be able to con-
`vert input data to the internal representations used by the
`program and then convert the internal representations
`back to output form. Thus, the crucial issue for input and
`output is change of representation for given data values.
`We are concerned here with input and output between
`programs and humans rather than with communication
`among programs or between programs and mass
`storage. We are interested primarily in imperative
`(Pascal-like) languages, but most of what we say applies
`to other classes of languages as well. The► model relies
`heavily on the use of abstract data types — either with or
`It has also been in-
`without direct language support.
`fluenced by the object-oriented style of program or-
`ganization.
`
`The programming languages of the 1960's and 1970's
`provided specialized
`facilities
`for
`input and output
`
`Ingenico v. IOENGINE
`IPR2019-00416 (US 8,539,047)
`Exhibit 2100
`
`

`

`..... ..
`
`....... ..
`..... •-•
`
`Input-output
`conversions
`
`Ou
`
`-v
`
`,sequence
`/ /
`of
`\."--.. i character
`Input
`..f"
`
`\integer\
`
`float
`vector[...]
`\record[...]
`\enum E
`,\MyTypel
`\MyType2
`
`The
`Program
`
`..Z
`External
`World
`Figure 1: Simple input-output requires conversion between data types of the
`program and specialized types suitable for direct transmission to physical
`input and output devices.
`do not provide formal pre- and post-conditions. Figure 1
`processing individual lines of text or streams of charac-
`depicts the problem of simple input-output.
`ters.
`The roots of these mechanisms lie in batch
`processing, and interactive computing using conventional
`In addition to the direct conversion operation, input
`video terminals (CRTs) still largely continues this tradi-
`and output operations usually have side effects on the in-
`tion.
`put or output stream, such as extending an output file or
`truncating an input file. With allowances for the variability
`This section develops a model that treats input and
`of these side effects, the model presented here applies
`output as a problem of converting between the data types
`both to stream and to line-by-line input and output.
`of the program and some specialized types suitable for
`direct transmission to the available input and output
`Default use of the input-output facilities of many lan-
`devices. This suffices to explain classical character-and
`guages provides roughly this simple level of functionality.
`line-oriented input and output. Section 3 extends the
`In Basic, for example, the commands
`model to abstract data types and interactive systems.
`INPUT x
`2.1. Minimal Input and Output
`PRINT x
`At the very least, input requires conversion of data be-
`encode the operations
`tween some specialized string type particularly well-
`x = In(InputStreamp
`suited for the input-output device (a device-relative type)
`Append(OutputStream, Out(x))
`and the built-in types of the program such as integers,
`If the input stream contains "12.35", the effect of these
`floating point numbers, booleans, strings, etc. Likewise,
`commands is to set the value of variable x to 12.35 and
`the
`requires conversion between between
`output
`produce the output "12.35".
`program's built-in types and a device-relative string type
`well-suited to the output device (often the same as the
`2.2. Formatted Input and Output
`string type used for input). We will let Pi denote any of
`The simple input-output scheme of section 2.1 is too
`the primitive data types of the programming language for
`restrictive for practical use, and virtually all languages
`Which input and output are supported.
`support some means of influencing the details of format-
`The simplest possible view of input and output is thus
`ting. The formatting information is encoded in a special
`that some simple string type, say seq-of-char, is built into
`format notation. We will let F,,, and Fout denote input and
`the input-output system. This special type is not in
`output formats, respectively. The encoded formats are
`general available for direct use by programmers. For
`passed to the conversion routines along with the vari-
`most primitive types P1 the minimal input-output system
`ables. Thus the system provides operatiops with the
`provides built-in operations with signatures
`functionality
`—> seq-of-char
`Out. P1
`—>
`In: seq-of-char
`The functional specifications of these operations simply
`require correct conversion between the two represen-
`tations. This specification is essentially syntactic, so we
`
`Out P1 x Fout
`—> seq-of-char
`In: seq-of-charx F17
`--> pJ
`Figure 2 depicts the problem of simple formatted input-
`output.
`
`2
`
`Ingenico v. IOENGINE
`IPR2019-00416 (US 8,539,047)
`Exhibit 2100
`
`

`

`\integer
`
`\si
`\float
`
`...
`
`''''''''''
`
`vector[...] \!
`
`................
`
`Input-output
`conversions
`with format
`support
`
`\record[...]
`
`\ enum E
`
`\MyTypel
`
`\MyType2 \
`
`The
`Program
`Figure 2:
`
`Ou • ut
`
`F.
`
`Input
`
`sequence
`of
`j
`character j
`
`External
`World
`Simple formatted Input-output consults format information
`for each value as it is converted.
`The specifications of the In and Out operations must
`be refined to account for the format parameters, but the
`operations are still fundamentally syntactic: they require
`the conversion between the two representations to ad-
`here to the format restrictions and to be correct within the
`Thus detailed
`accuracy specified by the
`format.
`specifications of the operations In and Out depend on the
`semantics of the particular format language being used.
`For purposes of this paper, the choice of format language
`is not significant, provided it can express at least the
`usual range of variability.
`The operations presented here provide a model that
`explains the most significant characteristics of formatted
`input-output systems. Since the syntactic idiosyncrasies
`tend to obscure the essential character of input-output as
`a process of changing representations, they are ignored
`here.
`2.3. Realistic input and Output
`Even with the addition of formatting, this formulation of
`input-output is still too restrictive, especially for output.
`The actual output of a system is often influenced by infor-
`mation about the state or history of the input and output
`transactions. For example, if a table of numbers is being
`printed, the position of individual numbers on a line and
`the number of spaces produced between individual
`numeric values must be adjusted for column alignment.
`For a second example, the system may provide page
`numbers and column headers whenever a page fills up or
`may align columns on a page. Thus input and output for
`many systems require state information that persists
`beyond individual invocations of the conversion functions.
`is persistent, operation& must be
`Since
`this state
`provided to initialize and manipulate it. These operations
`are commonly implicit in the format language.
`In order to explain actual input and output systems,
`we introduce an explicit state, 10State, to capture the
`state of the input-output facility that persists beyond in-
`
`A variety of formalisms for formatting have been used.
`The details are not important here, but the essential re-
`quirement for a format notation is that it provide enough
`information to select from among the conversion alter-
`natives provided by the system. These examples from
`Fortran, C, and Pascal suggest the possibilities:
`Fortran
`Pascal
`scanf("%f",x);
`99 FORMAT(F5.2)
`read(x);
`READ (5,99) X
`print(x:5:2); printf("%5.2f",x);
`WRITE (6,99) X
`If the input stream contains "12.35", all these programs
`read that input and yield the output "12.35". However,
`these commands have different effects when the input
`contains either more or fewer than five characters.
`The format languages for input and output, though
`deceptively similar, are actually not identical. For simple
`cases like field width or desired precision, the same ex-
`pression often has reasonable interpretations for both in-
`put and output. However, the output processor can make
`strong assumptions about the internal representation and
`the possible output forms, whereas the input processor
`must be prepared to handle any of a number of input
`strings, including erroneous formations. As a result, the
`rules for allowable input strings in any particular system
`may be rigid or fairly flexible.
`Format notations span a wide range of expressive-
`In addition to specifying the rules for
`ness and power.
`converting individual scalars, they may specify the way
`individual scalar values are arranged in the input or laid
`out on the output medium. Special syntax is often used
`to combine several individual input or output operations
`into a single invocation. As a result, most input-output
`the operations
`systems do not provide precisely
`described here. These operations do, however, explain
`the underlying functionality after the syntactic sugar is
`converted to calls on the basic operations. With the ex-
`tensions of section 2.3, they explain most existing for-
`matted input-output systems.
`
`3
`
`Ingenico v. IOENGINE
`IPR2019-00416 (US 8,539,047)
`Exhibit 2100
`
`

`

`\\\\\\
`\integer
`
`
`
` t1 t\Loat \
`
`
`. .....
`....
`.. .•
`
`- .
`•
` .....
`......
`...
`
`)41
`
`\vector[...]
`
`\record[...]
`
`\enum E
`
`\MyTypel
`
`\MyType2
`
`Input-output
`conversions
`with format
`support
`
`Out•ut
`
`/sequence
`/
`of
`/
`•
`line
`
`i
`/
`
`Input
`
`/ sequence
`of
`character
`
`The
`Program
`Figure 3:
`
`External
`World
`Realistic formatted input-output requires history or state
`information in addition to formats for individual values.
`of input and output, these Fortran statements form a
`dividual primitive operations. This state influences the in-
`composite operation that could be decomposed into Out
`terpretation of both input and output operations, it can be
`format operations for the individual vector elements and
`manipulated either explicitly (by SetUp operations) or im-
`blank spaces together with SetUp operations to handle
`plicitly (as a side effect of In and Out operations. We
`the overall layout.
`also select a richer type than seq-of-char for the device-
`relative object type of the Out operation in order to sup-
`port full-page
`layouts.
`For the case of classical
`character-oriented output the output can be segmented
`into lines (with vertical alignment controlled by lOState),
`so we will use seq-of-line to represent the richer device-
`relative output type. Real systems therefore provide in-
`put and output mechanisms to support operations with
`signatures more like
`Out Pi x Fout x 10State
`—> seq-of-line x lOState
`In: seq-of-char x Fin x lOState
`—> P, x lOState
`SetUp:
`—> lOState
`lOState x
`The SetUp operation is only partially specified here; this
`definition is suggestive of a class of operations that take
`parameters appropriate to the state change being per-
`formed. The scope controlled by the input-output state
`need not be restricted to single phrases or lines. In RPG,
`for example, a page restore and new column headings
`can be generated automatically each time an output page
`is filled. Figure 3 depicts the problem of realistic for-
`matted input-output.
`The role of the state is demonstrated by the Fortran
`format and statement
`100 FORMAT ('1 New page header,(/10(F10.2, 2X)))
`200 WRITE (6,100) V
`These statements print all the elements of vector V,
`beginning on a new page with page heading, printing ten
`elements per line, until the vector is exhausted. The
`bookkeeping required to keep track of information such
`as the current position in the vector, the current column,
`and the current line depends on maintaining a correct
`representation of the current state of the output trans-
`action while it is in progress. With respect to our model
`
`3. Abstract Data Types and Interactive
`Interfaces
`The interface between people and computers is a criti-
`cal factor in effective computer use. This interface has
`become increasingly important with the advent of inter-
`active systems with high-performance graphic displays. I
`will now turn to the problems of input and output for such
`systems.
`As noted above, early interactive systems used input
`and output mechanisms designed for batch processing,
`simply treating the teletype as both an input and an out-
`put device. When video terminals replaced teletypes, we
`retained the same strategy (but we lost the ability to look
`back on the paper listing for results that had been
`produed a few dozen lines previously). The record of an
`interactive session that takes place in this mode, with
`line-by-line input and output scrolled on a display, is
`called a typescript. Typescripts are often discarded as
`they are displayed, but some systems provide a
`mechanism for logging them in a file.
`In a typescript-oriented system, the output is a
`program history — a stream of snapshots of subsets of
`the program state. The subsets of the program state and
`the timing of the snapshots are controlled by the program
`that is executing. A system that provides only this form
`of output neglects the needs of the human user, who is
`often better served by a single, continuously updated,
`view of the program state. It ignores the advantages of
`providing the human user with control over the pbrticular
`In addition, it fails to exploit the
`view to be displayed.
`human's ability to use (and the terminars ability to
`provide) cues based on keeping current values of par-
`ticular information in fixed positions.
`
`4
`
`Ingenico v. IOENGINE
`IPR2019-00416 (US 8,539,047)
`Exhibit 2100
`
`

`

`In contrast, a two-dimensional interface presents a
`variety of information simultaneously and updates it
`dynamically; a given piece of information can be kept up-
`to-date in a fixed position. Work on text editors [Card
`82, Meyrowitz 82] and interaction 'techniques [Embley
`81, Hirsch 81] support the intution that two-dimensional
`displays are better than one-dimensional typescripts.
`Thus, the availability of inexpensive high-performance
`displays provides an opportunity for qualitiative improve-
`ments to interactive interfaces. Sophisticated display in-
`terfaces are currently difficult and expensive to develop,
`and a number of research projects are addressing
`various aspects of the problem [Baecker 79, de Jong
`80, Green
`81, Guttag
`80, Hayes
`82, Kernighan
`81, Mallgren
`82, Myers
`80, Reisner
`81, Rowe
`83, Teitelman 84, VanWyk 82, Wallis 80]. The present
`work contributes a model for input and output that is com-
`plementary to those methodological explorations.
`Because the role of the human user is much more sig-
`nificant in interactive systems than in batch systems, the
`significance of the timing of input and output events is
`more critical in interactive systems. Sensitivity to event
`timing occurs in several ways.
`• The feedback provided by the system must be
`properly synchronized with input from the user.
`For example, if a system prompt is provided, it
`must actually be sent to the output device before
`user input is supplied. Further, feedback is usually
`provided to the user as each input phrase is
`developed.
`• Any system that allows the user to provide input
`values by pointing to values currently displayed on
`the screen must be extremely careful to update the
`display whenever the stored values change.
`Otherwise the user may provide incorrect Input by
`pointing to a displayed image that does not match
`the stored value that will be inserted in the input
`stream.
`• Interactive systems must cope with input provided
`asynchronously by the user: processing of the
`command that means "terminate this process
`immediately" should not wait until the current
`process terminates on its own.
`These timing issues force the implementor of the input-
`output system to rethink such issues as the use of buf-
`fers, the significance of system delays, and the use of in-
`terrupts.
`In addition, advances in software and hardware tech-
`nology have introduced new problems. These include
`system provisions for
`• Abstract data types (user-defined types): Ap-
`propriate input and output conversions for user-
`defined types should be selected as part of the
`design of the abstract type. This requires type-
`specific knowledge, but conventional input-output
`systems (and the model presented in Section 2) do
`not provide a way to supply that information to the
`input-output system. Similar considerations often
`apply to primitive nonscalar types such as arrays
`and records.
`• Two-dimensional output. High-performance dis-
`plays provide a graphic capability that can enhance
`
`the quality of interfaces. This requires the ability to
`construct two-dimensional images that represent
`data values, but conventional input-output systems
`do not support graphics.
`• Interactive input Interactive sytems must provide
`feedback to the user while he or she supplies input
`actions. In addition, input operations may refer to
`information that is currently displayed on the ter-
`minal. This requires active involvement of the
`input-output system in feedback and the interpreta-
`tion of pointing actions, but this notion is entirely
`foreign to conventional input-output systems.
`We will consider each of these problems in turn, then ex-
`tend the informal model of section 2 to show how to deal
`with them. The purpose of this section is to present the
`problems introduced by modern programming systems.
`The next section proposes a model for input and output
`in such systems.
`3.1. User-Defined and Nonscalar Types
`During the 1970's, work on abstract data types
`showed how to extend the set of primitive types provided
`by a language to include types defined by the user
`[Liskov 77, Shaw 81]. One of the objectives of this work
`was for the programming language and support system
`to provide the same system support for types defined by
`the user as it provided for primitive types. Although the
`work was generally successful, it did not succeed in
`providing genuine type extensibility for input and output.
`Full support for input-output in the presence of type
`extensibility (or even system-supported nonscalar types
`such as records) requires solutions to two problems
`• Providing the type-definer with control over conver-
`sion between internal representations and the
`device-relative types used for input and output.
`• Providing the type-definer with access to system
`input and output facilities, including the lOState,
`the facilities for constructing output renderings by
`composing renderings of components, and the
`facilities for parsing input streams.
`Thus, in order to make the input-output facilities ex-
`tensible to new types, it is necessary to provide a way for
`user-defined conversions to be added to the set of con-
`versions known to the input-output system. Some sys-
`tems provide default conversions from internal represen-
`tations to strings, but since these have no knowledge of
`the type abstractions involved, they can do no better than
`dumping the internal structure of the type. However, this
`is not sufficient.
`for example, a set
`Consider,
`represented as a vector (used for the set elements) and
`an integer (used for the current number of set elements).
`A common representation stores current set elements in
`the lowest-indexed array elements. A default output con-
`version could do no better than converting the integer
`and all the array elements to strings and inserting a few
`type-specific conversion,
`standard delimiters.
`A
`however, would convert only
`the active elements,
`separate them with commas, and add set braces at the
`front and back. The integer would not be converted for
`output; it would be used only to determine how many ar-
`ray elements to convert.
`
`5
`
`Ingenico v. IOENGINE
`IPR2019-00416 (US 8,539,047)
`Exhibit 2100
`
`

`

`integer
`
`float
`
`vector[...]
`
`C-
`• 'cz•
`"1
`
`record[...],
`
`• <...4
`
`Ou
`
`Input
`
`External
`The
`World
`Program
`Figure 4:
`Input-output for user-defined and nonscalar types requires the
`formatting capabilities to be provided for all types, not just for primitive
`scalar types.
`sideration is changed. Therefore, in addition to allowing
`the programmer to define the operations themselves, the
`system must provide a mechanism for registering these
`definitions with the input-output control mechanism so
`that they can be invoked as necessary. Figure 4 depicts
`the facilities required for input and output of user-defined
`and nonscalar types.
`
`enum E
`
`MyTypel-•
`
`MyType2.•
`
`<A • •
`(.1
`Input-output
`conversions with
`format support
`
`Since user-defined types are often composite struc-
`tures whose elements are of other types, reasonable im-
`plementations of input and output must also be able to
`call on the input and output conversions of the other
`types as subroutines.
`In order for this to work, the
`device-relative types used for input and output conver-
`sion must be available to programmers as actual data
`types. (For this reason, type-specific routines that do in-
`dividualized conversion but interact directly with the input
`or output devices also fail to solve the whole problem.)
`This facility is not typically provided by conventional pro-
`gramming languages. There are some exceptions: the
`functions sscanf and sprintf in C and so-called "core-to-
`core" input-output in certain other systems allow the
`programmer to obtain the results of built-in input-output
`operations. However, even these systems do not allow
`user-defined types to be added to the built-in input-output
`conversion tools.
`For user-defined types, we will let Ti denote any user-
`defined type. Only the designer of the user-defined type
`Ti has enough information to know how to convert be-
`tween Ti and the standard special type used for input or
`In addition, proper formatting for nonscalars
`output.
`varies a lot from application to application. Therefore we
`need a richer input-output facility, one that supports user-
`defined types Ti wherever it supports primitive types Pt
`The required functionality is achieved by adding Ti to the
`set of types required by the signatures of the In and Out
`operations:
`Out: (Pt Ti} x F out x lOState
`--> seq-of-line x lOState
`In: seq-of-char x F1 x lOState
`--> {Pp Ti x lOState
`--> lOState
`lOState x
`Setup:
`Although it is straightforward to extend the signatures of
`the specification, it is harder to implement the change.
`The type-specific conversion routines will be provided by
`the user program, and it is not practical to recompile the
`runtime system each time the set of types under con-
`
`3.2. Two-Dimensional Output
`The introduction of high-resolution, high-bandwidth
`displays has made a qualitative difference in the kinds of
`user interfaces that can be defined. The use of graphics
`literally adds a new dimension to the class of images that
`can depict data values, and the ability to maintain par-
`ticular data values at fixed locations on the display allows
`the user to take advantage of physical layout to avoid
`searching a typescript for information. Three new
`problems arise as a result of the new technology:
`• Conversion of internal representation to output
`form that includes graphics as well as text
`• Continuous maintenance of the image
`• Allocation of space on the display
`The power of two-dimensional interfaces is best il-
`lustrated with examples. Figure 5 shows the display
`during an interactive session using the Xerox Cedar pro-
`gramming environment [Teitelman 84].
`In this display,
`the bottom row of small images denote processes that
`are alive but not of current interest. Three processes are
`active, each within one window. The three windows are
`arranged so as to use all the display without allowing any
`window to obscure any of the others. At the top of each
`window and at the top of the screen, menus provide
`quick access to common commands.
`
`Figure 6 shows the Microsoft Chart application running
`on an Apple Macintosh. The program constructs plots
`from given data. One window is used for the data for
`each plot, and several plots can be combined in a single
`
`6
`
`Ingenico v. IOENGINE
`IPR2019-00416 (US 8,539,047)
`Exhibit 2100
`
`

`

`Coder IA Doeuwaystalion atOMIllf
`&BP 01•1611,- Milt WWII.* Ns !LAIC CAM .on 1•111•411. bkr
`
`110,1
`
`MI& OW ecorlar
`
`ION OM. 4.11
`• •••••••••
`• ,••••••• •••
`tr.. pm ••
`Spoon
`
`n...
`amp.*
`Cab“...4.
`tow worm C
`*Ow %CM nhon. N. mil ...I 0 IN Men lb am •04. mil dim mom Me Ow
`ea yr ima. we Ims a. =maw ••••••••• wow., *fa. Alm Md.
`••••
`1•••••• v... Om 10.0..110•1010mund. taw P.
`160
`'Lll•
`
`N.. •
`
`
`
`•••••••• mamma.
`
`••••/*. HAI
`-
`in• ant MIK smil C.. owe tr.
`•••••••I OW WIN. MN. My =Memo
`WM.. ay Or, im pm= imp
`•Ivar.infr
`FM IMMO •
`P..,
`
`••• woman • •• 000.1. •
`•
`
`Cs 11•••••• ••••••
`...mu
`tow.. pow
`, •
`trt=mi"Tra Ume D
`a
`
`INC/0.54. MTHAT.Ilir
`elm maroon ••••••••••••••1
`ge.
`011...1117,•=.
`
`•
`
`•
`
`•
`
`•
`
`•
`
`•
`
`••••
`
`Oa, w.
`Simeon
`th.1001.11.
`4.111
`pp g.
`
`•
`
`••••141
`1.001.11ar MM.
`11•••••. WY/.
`1110.011W •••••••
`111••••••• b••
`▪
`
`Figure 5: Display layout in Cedar Documentation Browser
`of choices are possible, depending on characteristics of
`graph. This example differs from the previous one in
`the graphics device, but they must support images that
`several ways. First, the windows are allowed to overlap;
`include at least character strings, lines, and colored
`simple user actions select the window that is active, or in-
`(pattern-filled) areas. For the sake of discussion, we'll
`tuitively "on top," at any time. Second, all the windows
`call the type Image; it might be represented as a display
`In particular,
`shown here belong to the same process.
`list of strings, lines, and shapes.
`changes to either of the data windows are reflected in the
`window that contains the graph.
`User-defined types require the ability to create partial
`images and compose them to form the complete image
`Decisions such as the number of windows to as-
`to be displayed, just as they did for character-sequence
`sociate with a process and the policy for sharing display
`output. Less obviously, this facility can be used to good
`space among several windows are included in the design
`advantage by primitive types of the programming lan-
`decisions make when interfaces are created.
`guage. Since two-dimensional images are richer than
`Clearly, the sequence of characters is not an ade-
`character sequences, the internal state required to com-
`quate internal representation for images directed to a
`pose them will also be richer.
`graphics output device. Therefore, a new internal type
`for constructing the output image is required. A number
`
`r * File Edit Data Gallery Chart
`NASA Demand
`
`Format
`
`100.011B1ts
`
`I 0.011Bits
`
`New Ser
`
`Order:
`Proa Prod
`Order: JJ
`
`I
`1:81 Plot Series
`x
`
`1983
`1984
`
`0.5118879060
`0.5349228624
`
`IC :1111.11 Manned MM.
`
`Cod* Size
`
`
`
`0.1MBits
`1960
`
`1965
`
`1970
`
`1975
`Year
`Onboard Code Size for Mann
`and Annual Programmer P
`
`Order:
`Eg Plot Se
`
`1965
`1966
`1968
`1970.5
`1973
`1981
`
`IS
`1S
`1S
`197
`50 fillit
`t
`r' ti•
`1911X I 10 411A4,9K7/11
`
`l'••
`
`0.159744
`0.39
`0.622592
`1245184
`0262144
`16
`
`Figure 6: Display layout in Macintosh Chart application.
`
`7
`
`Ingenico v. IOENGINE
`IPR2019-00416 (US 8,539,047)
`Exhibit 2100
`
`

`

`\integer
`
`\float
`
`\\\
`vector[...]
`
`\record[...],
`
`\\enum E
`
`\\ MyTypel •
`
`MyType2
`
`Ar..,••
`•
`
`•
`• • •
`•
`
`•
`
`Output
`
`/image =
`{ string,
`line,
`shape }
`
`-------
`
`•••••
`Input
`
`sequence
`;
`of
`;
`token ;
`//4
`/token =
`{ char, pt}
`
`Input-output
`conversions with
`format support
`
`The
`Program
`
`External
`World
`Figure 7: Two-dimensional output requires a significantly larger
`intermediate state and a richer target type.
`Graphics displays provide the ability to improve on the
`cal locus of information about overall layout, which
`typescript mode of output as well as on the image
`may be encoded as format information Fcomp.
`generated for individual values. It is useful to regard the
`• Actual display of a complete Image is thes respon-
`entire display as a single image that is built up from
`sibility of the implementation of type Image.
`images of individual values. This decision allows the
`In object-oriented terms, each of these steps would be
`same mechanisms to be used for constructing images of
`a method of the appropriate type.
`individual values and for composing the entire display.
`The lOState contains the information to control for-
`When the problem is viewed this way, the generation
`matting and layout. A set of functions which we call
`of a partial image is similar to the generation of a single
`generically QueryStyle must be provided to extract per-
`scalar value to print in a typescript. The partial image
`tinent format information (e.g., Fin from the lOState).
`can be produced without binding all display decisions,
`We now need functionality like
`such as color and position on the display. Decisions
`Out {Pfr TI x Fout —> Protolmage
`about the proper location of each image can then be
`Compose: Protolmage x Fcomp x lOState
`represented in the internal state of the input-output sys-
`—> Image x lOState
`tem and used to bind any remaining decisions about the
`In: seq-of-charx Fin x lOState
`display when the partial images are composed into the
`—>
`x lOState
`c

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket