Home
Patent Search
IMT Blog
REGISTER
|
SIGN IN
United States Patent Application
20050091576
Kind Code
A1
Relyea, Rob ; et al.
April 28, 2005
Programming interface for a computer platform
Abstract
A programming interface provides functions for generating applications, documents, media presentations and other content. These functions allow developers to obtain services from an operating system, object model service, or other system or service.
Inventors:
Relyea; Rob
(Bellevue, WA)
, Bogdan; Jeff
(Bellevue, WA
)
Correspondence Name and Address:
421 W RIVERSIDE AVENUE SUITE 500
LEE & HAYES PLLC
SPOKANE
WA
99201
Series Code:
694080
Filed:
October 24, 2003
U.S. Current Class:
715/502
U.S. Class at Publication:
715/502
Intern'l Class:
G06F 017/00
Claims
1. A programming interface embodied on one or more computer readable media, comprising: a first group of services related to generating graphical components; a second group of services related to binding properties of a class to a data source; and a third group of services related to formatting content.
2. A programming interface as recited in claim 1, wherein the first group of services includes a service that determines an appearance of the graphical components.
3. A programming interface as recited in claim 1, wherein the first group of services includes a service that determines a behavior of the graphical components.
4. A programming interface as recited in claim 1, wherein the first group of services includes a service that determines an arrangement of the graphical components.
5. A programming interface as recited in claim 1, wherein the first group of services includes a plurality of nested primitive controls that define the graphical components.
6. A programming interface as recited in claim 1, wherein the graphical components are defined by vector graphics.
7. A programming interface as recited in claim 1, further comprising a fourth group of services related to animating at least one graphical component.
8. A programming interface as recited in claim 1, further comprising a fourth group of services related to creating applications having navigation capabilities.
9. A programming interface as recited in claim 1, further comprising a fourth group of services related to supporting electronic ink processing systems.
10. A programming interface as recited in claim 1, further comprising a fourth group of services related to combining a plurality of different media types.
11. A programming interface as recited in claim 1, further comprising a fourth group of services related to executing applications on a client using a browser-type interface.
12. A programming interface as recited in claim 1, further comprising a fourth group of services related to automatically installing and executing an application.
13. A programming interface as recited in claim 1, further comprising a fourth group of services related to serializing content.
14. A programming interface as recited in claim 1, further comprising a fourth group of services related to automating the generation of a user interface.
15. A software architecture comprising the programming interface as recited in claim 1.
16. A programming interface embodied on one or more computer readable media, comprising: a first group of services related to formatting content prior to displaying the content; a second group of services related to binding properties of a class to a data source; and a third group of services related to generating imaging effects.
17. A programming interface as recited in claim 16, wherein the first group of services includes arranging a plurality of data elements.
18. A programming interface as recited in claim 16, wherein the third group of services includes animating at least one graphical item.
19. A programming interface as recited in claim 16, further comprising a fourth group of services related to creating applications that allow a user of the application to navigate between a plurality of images.
20. A programming interface as recited in claim 16, further comprising a fourth group of services related to editing previously created content.
21. A programming interface as recited in claim 16, further comprising a fourth group of services related to managing input received from an input device.
22. A programming interface as recited in claim 16, further comprising a fourth group of services related to enabling interoperability with other computing systems.
23. A computer system including one or more microprocessors and one or more software programs, the one or more software programs utilizing an application program interface to request services from an operating system, the application program interface including separate commands to request services comprising the following groups of services: a first group of services related to generating graphical objects; a second group of services related to creating components of the graphical objects; and a third group of services related to modifying an appearance of the graphical objects.
24. A computer system as recited in claim 23, wherein the first group of services includes a service for defining a behavior of at least one graphical object.
25. A computer system as recited in claim 23, wherein the first group of services includes a service for defining arrangement of the graphical objects.
26. A computer system as recited in claim 23, wherein modifying an appearance of the graphical objects includes animating the graphical objects.
27. A computer system as recited in claim 23, wherein the second group of services includes services to generate geometric shapes.
28. A computer system as recited in claim 23, wherein the application program interface further includes a fourth group of services related to formatting text.
29. A method comprising: calling one or more first functions to facilitate formatting data; calling one or more second functions to facilitate creating graphical objects; and calling one or more third functions to facilitate changing an appearance of the graphical objects.
30. A method as recited in claim 29, further including calling one or more fourth functions to facilitate generating a user interface using a plurality of graphical objects.
31. A method as recited in claim 29, further including calling one or more fourth functions to facilitate runtime creation of a user interface.
32. A method as recited in claim 29, further including: calling one or more fourth functions to facilitate generating a user interface using a plurality of graphical objects; and calling one or more fifth functions to facilitate runtime creation of the user interface.
33. A method as recited in claim 29, wherein the first functions facilitate: receiving user input; and arranging data elements on a display.
34. A method as recited in claim 29, wherein the second functions facilitate generating geometric shapes.
35. A method as recited in claim 29, wherein the second functions facilitate generating at least one geometric shape and the third functions facilitate modifying an appearance of the geometric shape.
36. A system comprising: means for exposing a first set of functions that enable creating a plurality of geometric shapes; means for exposing a second set of functions that enable changing the manner in which the geometric shapes are arranged; and means for exposing a third set of functions that enable modifying appearances of the geometric shapes.
37. A system as recited in claim 36, wherein the second set of functions further enable arrangement of the geometric shapes on a page to be rendered.
38. A system as recited in claim 36, wherein the plurality of geometric shapes include a line.
39. A system as recited in claim 36, wherein the third set of functions further enable associating imaging effects with at least one geometric shape.
40. A system as recited in claim 36, wherein the third set of functions further enable changing an appearance of a particular geometric shape over a period of time.
41. A system as recited in claim 36, further comprising means for exposing a fourth set of functions that enable generation of a user interface using the plurality of geometric shapes.
42. A system as recited in claim 36, further comprising means for exposing a fourth set of functions that enable associating a graphical object with one or more data sources.
43. A system as recited in claim 36, further comprising means for exposing a fourth set of functions that enable displaying data-specific versions of graphical objects.
44. A method comprising: calling one or more first functions to facilitate creating components of graphical objects; calling one or more second functions to facilitate generating graphical objects; calling one or more third functions to facilitate modifying an appearance of the graphical objects; calling one or more fourth functions to facilitate arranging the graphical objects; and calling one or more fifth functions to facilitate associating the graphical objects with data sources.
45. A method as recited in claim 44, further comprising calling one or more sixth functions to facilitate navigating between a plurality of displays of content.
46. A method as recited in claim 44, wherein the components of the graphical objects include a plurality of shapes.
47. A method as recited in claim 44, wherein the second functions further facilitate generating a graphical user interface.
48. A method as recited in claim 44, wherein the third functions include functions that modify the appearance of a particular graphical object.
49. A method as recited in claim 44, wherein the third functions include functions that modify the appearance of one or more components of a graphical object.
50. A method as recited in claim 44, wherein the third functions include functions that move graphical objects to different positions on a display.
51. A method as recited in claim 44, wherein the third functions modify an appearance of a graphical object in response to user input.
52. A method as recited in claim 44, wherein the fourth functions modify an arrangement of graphical objects in response to user input.
53. A method of developing a program, the method comprising: accessing a first group of functions to select components of a graphical Image; accessing a second group of functions to generate the graphical image; accessing a third group of functions to modify an appearance of at least one component of the graphical image; and accessing a fourth group of functions to format content associated with the graphical image.
54. A method as recited in claim 53, wherein the graphical image is a user interface.
55. A method as recited in claim 53, wherein the content is textual information.
56. A method as recited in claim 53, wherein the content is graphical data.
57. A method as recited in claim 53, further comprising accessing a fifth group of functions to associate a component of the graphical image with a data source.
58. A method as recited in claim 53, wherein the third group of functions further modify a behavior associated with the at least one component of the graphical image.
Description
TECHNICAL FIELD
[0001] This invention relates to software and to development of such software. More particularly, this invention relates to a programming interface that facilitates use of a software platform by application programs and computer hardware.
BRIEF DESCRIPTION OF ACCOMPANYING COMPACT DISCS
[0002] Accompanying this specification is a set of three compact discs that stores a Software Development Kit (SDK) for the Microsoft.RTM. Windows.RTM. Code-Named "Longhorn" operating system. The SDK contains documentation for the Microsoft.RTM. Windows.RTM. Code-Named "Longhorn" operating system. Duplicate copies of each of these three compact discs also accompany this specification.
[0003] The first compact disc in the set of three compact discs (CD 1 of 3) includes a file folder named "lhsdk" that was created on Oct. 22, 2003; it is 586 Mbytes in size, contains 9,692 sub-folders, and contains 44,292 sub-files. The second compact disc in the set of three compact discs (CD 2 of 3) includes a file folder named "ns" that was created on Oct. 22, 2003; it is 605 Mbytes in size, contains 12,628 sub-folders, and contains 44,934 sub-files. The third compact disc in the set of three compact discs (CD 3 of 3) includes a file folder named "ns" that was created on Oct. 22, 2003; it is 575 Mbytes in size, contains 9,881
sub-folders, and contains 43,630 sub-files. The files on each of these three compact discs can be executed on a Windows.RTM.-based computing device (e.g., IBM-PC, or equivalent) that executes a Windows.RTM.-brand operating system (e.g., Windows.RTM. NT, Windows.RTM. 98, Windows.RTM. 2000, Windows.RTM. XP, etc.). The files on each compact disc in this set of three compact discs are hereby incorporated by reference.
[0004] Each compact disc in the set of three compact discs itself is a CD-R, and conforms to the ISO 9660 standard. The contents of each compact disc in the set of three compact discs is in compliance with the American Standard Code for Information Interchange (ASCII).
BACKGROUND
[0005] Very early on, computer software came to be categorized as "operating system" software or "application" software. Broadly speaking, an application is software meant to perform a specific task for the computer user such as solving a mathematical equation or supporting word processing. The operating system is the software that manages and controls the computer hardware. The goal of the operating system is to make the computer resources available to the application programmer while at the same time, hiding the complexity necessary to actually control the hardware.
[0006] The operating system makes the resources available via functions that are collectively known as the Application Program Interface or API. The term API is also used in reference to a single one of these functions. The functions are often grouped in terms of what resource or service they provide to the application programmer. Application software requests resources by calling individual API functions. API functions also serve as the means by which messages and information provided by the operating system are relayed back to the application software.
[0007] In addition to changes in hardware, another factor driving the evolution of operating system software has been the desire to simplify and speed application software development. Application software development can be a daunting task, sometimes requiring years of developer time to create a sophisticated program with millions of lines of code. For a popular operating system such as various versions of the Microsoft Windows.RTM. operating system, application software developers write thousands of different applications each year that utilize the operating system. A coherent and usable operating system base is required to support so many diverse application developers.
[0008] Often, development of application software can be made simpler by making the operating system more complex. That is, if a function may be useful to several different application programs, it may be better to write it once for inclusion in the operating system, than requiring dozens of software developers to write it dozens of times for inclusion in dozens of different applications. In this manner, if the operating system supports a wide range of common functionality required by a number of applications, significant savings in applications software development costs and time can be achieved.
[0009] Regardless of where the line between operating system and application software is drawn, it is clear that for a useful operating system, the API between the operating system and the computer hardware and application software is as important as efficient internal operation of the operating system itself.
[0010] Over the past few years, the universal adoption of the Internet, and networking technology in general, has changed the landscape for computer software developers. Traditionally, software developers focused on single-site software applications for standalone desktop computers, or LAN-based computers that were connected to a limited number of other computers via a local area network (LAN). Such software applications were typically referred to as "shrink wrapped" products because the software was marketed and sold in a shrink-wrapped package. The applications utilized well-defined APIs to access the underlying operating system of the computer.
[0011] As the Internet evolved and gained widespread acceptance, the industry began to recognize the power of hosting applications at various sites on the World Wide Web (or simply the "Web"). In the networked world, clients from anywhere could submit requests to server-based applications hosted at diverse locations and receive responses back in fractions of a second. These Web applications, however, were typically developed using the same operating system platform that was originally developed for standalone computing machines or locally networked computers. Unfortunately, in some instances, these applications do not adequately transfer to the distributed computing regime. The underlying platform was simply not constructed with the idea of supporting limitless numbers of interconnected computers.
[0012] To accommodate the shift to the distributed computing environment being ushered in by the Internet, Microsoft Corporation developed a network software platform known as the ".NET" Framework (read as "Dot Net"). Microsoft.RTM. .NET is software for connecting people, information, systems, and devices. The platform allows developers to create Web services that will execute over the Internet. This dynamic shift was accompanied by a set of API functions for Microsoft's .NET.TM. Framework.
[0013] As use of the .NET.TM. Framework has become increasingly common, ways to increase the efficiency and/or performance of the platform have been identified. The inventors have developed a unique set of API functions to allow for such increased efficiency and/or performance.
SUMMARY
[0014] A programming interface provides functions for generating applications, documents, media presentations and other content. These functions allow developers to obtain services from an operating system, object model service, or other system or service. In one embodiment, the functions allow a developer to generate a graphical user interface.
BRIEF DESCRIPTION OF THE DRAWINGS
[0015] The same numbers are used throughout the drawings to reference like features.
[0016] FIG. 1 illustrates a network architecture in which clients access Web services over the Internet using conventional protocols.
[0017] FIG. 2 is a block diagram of a software architecture for a network platform, which includes an application program interface (API).
[0018] FIG. 3 is a block diagram of the presentation subsystem supported by the API, as well as function classes of the various API functions.
[0019] FIG. 4 is a block diagram of an exemplary computer that may execute all or part of the software architecture.
[0020] FIGS. 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 and 16 illustrate various example implementations of a programming interface.
DETAILED DESCRIPTION
[0021] This disclosure addresses an application program interface (API) for a network platform upon which developers can build Web applications and services. More particularly, an exemplary API is described for operating systems that make use of a network platform, such as the .NET.TM. Framework created by Microsoft Corporation. The .NET.TM. Framework is a software platform for Web services and Web applications implemented in the distributed computing environment. It represents the next generation of Internet computing, using open communication standards to communicate among loosely coupled Web services that are collaborating to perform a particular task.
[0022] In the described implementation, the network platform utilizes XML (extensible markup language), an open standard for describing data. XML is managed by the World Wide Web Consortium (W3C). XML is used for defining data elements on a Web page and business-to-business documents. XML uses a similar tag structure as HTML; however, whereas HTML defines how elements are displayed, XML defines what those elements contain. HTML uses predefined tags, but XML allows tags to be defined by the developer of the page. Thus, virtually any data items can be identified, allowing Web pages to function like database records. Through the use of XML and other open protocols, such as Simple Object Access Protocol (SOAP), the network platform allows integration of a wide range of services that can be tailored to the needs of the user. Although the embodiments described herein are described in conjunction with XML and other open standards, such are not required for the operation of the claimed invention.
[0023] As used herein, the phrase application program interface or API includes traditional interfaces that employ method or function calls, as well as remote calls (e.g., a proxy, stub relationship) and SOAP/XML invocations.
[0024] It should be appreciated that in some of namespace descriptions below, descriptions of certain classes, interfaces, enumerations and delegates are left blank. More complete descriptions of these classes, interfaces, enumerations and delegates can be found in the subject matter of the compact discs that store the SDK referenced above.
[0025] Exemplary Network Environment
[0026] FIG. 1 shows a network environment 100 in which a network platform, such as the .NET.TM. Framework, may be implemented. The network environment 100 includes representative Web services 102(1), . . . , 102(N), which provide services that can be accessed over a network 104
(e.g., Internet). The Web services, referenced generally as number 102, are programmable application components that are reusable and interact programmatically over the network 104, typically through industry standard Web protocols, such as XML, SOAP, WAP (wireless application protocol), HTTP (hypertext transport protocol), and SMTP (simple mail transfer protocol) although other means of interacting with the Web services over the network may also be used, such as Remote Procedure Call (RPC) or object broker type technology. A Web service can be self-describing and is often defined in terms of formats and ordering of messages.
[0027] Web services 102 are accessible directly by other services (as represented by communication link 106) or a software application, such as Web application 110 (as represented by communication links 112 and 114). Each Web service 102 is illustrated as including one or more servers that execute software to handle requests for particular services. Such services often maintain databases that store information to be served back to requesters. Web services may be configured to perform any one of a variety of different services. Examples of Web services include login verification, notification, database storage, stock quoting, location directories, mapping, music, electronic wallet, calendar/scheduler, telephone listings, news and information, games, ticketing, and so on. The Web services can be combined with each other and with other applications to build intelligent interactive experiences.
[0028] The network environment 100 also includes representative client devices 120(1), 120(2), 120(3), 120(4), . . . , 120(M) that utilize the Web services 102 (as represented by communication link 122) and/or the Web application 110 (as represented by communication links 124, 126, and 128). The clients may communicate with one another using standard protocols as well, as represented by an exemplary XML link 130 between clients 120(3) and 120(4).
[0029] The client devices, referenced generally as number 120, can be implemented many different ways. Examples of possible client implementations include, without limitation, portable computers, stationary computers, tablet PCs, televisions/set-top boxes, wireless communication devices, personal digital assistants, gaming consoles, printers, photocopiers, and other smart devices.
[0030] The Web application 110 is an application designed to run on the network platform and may utilize the Web services 102 when handling and servicing requests from clients 120. The Web application 110 is composed of one or more software applications 130 that run atop a programming framework 132, which are executing on one or more servers 134 or other computer systems. Note that a portion of Web application 110 may actually reside on one or more of clients 120. Alternatively, Web application 110
may coordinate with other software on clients 120 to actually accomplish its tasks.
[0031] The programming framework 132 is the structure that supports the applications and services developed by application developers. It permits multi-language development and seamless integration by supporting multiple languages. It supports open protocols, such as SOAP, and encapsulates the underlying operating system and object model services. The framework provides a robust and secure execution environment for the multiple programming languages and offers secure, integrated class libraries.
[0032] The framework 132 is a multi-tiered architecture that includes an application program interface (API) layer 142, a common language runtime (CLR) layer 144, and an operating system/services layer 146. This layered architecture allows updates and modifications to various layers without impacting other portions of the framework. A common language specification (CLS) 140 allows designers of various languages to write code that is able to access underlying library functionality. The specification 140 functions as a contract between language designers and library designers that can be used to promote language interoperability. By adhering to the CLS, libraries written in one language can be directly accessible to code modules written in other languages to achieve seamless integration between code modules written in one language and code modules written in another language. One exemplary detailed implementation of a CLS is described in an ECMA standard created by participants in ECMA TC39/TG3. The reader is directed to the ECMA web site at www.ecma.ch.
[0033] The API layer 142 presents groups of functions that the applications 130 can call to access the resources and services provided by layer 146. By exposing the API functions for a network platform, application developers can create Web applications for distributed computing systems that make full use of the network resources and other Web services, without needing to understand the complex interworkings of how those network resources actually operate or are made available. Moreover, the Web applications can be written in any number of programming languages, and translated into an intermediate language supported by the common language runtime 144 and included as part of the common language specification 140. In this way, the API layer 142 can provide methods for a wide and diverse variety of applications.
[0034] Additionally, the framework 132 can be configured to support API calls placed by remote applications executing remotely from the servers 134 that host the framework. Representative applications 148(1) and 148(2) residing on clients 120(3) and 120(M), respectively, can use the API functions by making calls directly, or indirectly, to the API layer 142 over the network 104.
[0035] The framework may also be implemented at the clients. Client 120(3) represents the situation where a framework 150 is implemented at the client. This framework may be identical to server-based framework 132, or modified for client purposes. Alternatively, the client-based framework may be condensed in the event that the client is a limited or dedicated function device, such as a cellular phone, personal digital assistant, handheld computer, or other communication/computing device.
[0036] Developers' Programming Framework
[0037] FIG. 2 shows the programming framework 132 in more detail. The common language specification (CLS) layer 140 supports applications written in a variety of languages 130(1), 130(2), 130(3), 130(4), . . . , 130(K). Such application languages include Visual Basic, C++, C#, COBOL, Jscript, Perl, Eiffel, Python, and so on. The common language specification 140 specifies a subset of features or rules about features that, if followed, allow the various languages to communicate. For example, some languages do not support a given type (e.g., an "int*" type) that might otherwise be supported by the common language runtime 144. In this case, the common language specification 140 does not include the type. On the other hand, types that are supported by all or most languages (e.g., the "int[ ]" type) is included in common language specification 140 so library developers are free to use it and are assured that the languages can handle it. This ability to communicate results in seamless integration between code modules written in one language and code modules written in another language. Since different languages are particularly well suited to particular tasks, the seamless integration between languages allows a developer to select a particular language It for a particular code module with the ability to use that code module with modules written in different languages. The common language runtime 144 allow seamless multi-language development, with cross language inheritance, and provide a robust and secure execution environment for the multiple programming languages. For more information on the common language specification 140 and the common language runtime 144, the reader is directed to co-pending applications entitled "Method and System for Compiling Multiple Languages", filed Jun. 21, 2000 (Ser. No. 09/598,105) and "Unified Data Type System and Method" filed Jul. 10, 2000 (Ser. No. 09/613,289), which are incorporated by reference.
[0038] The framework 132 encapsulates the operating system 146(1) (e.g., Windows.RTM.-brand operating systems) and object model services 146(2) (e.g., Component Object Model (COM) or Distributed COM). The operating system 146(1) provides conventional functions, such as file management, notification, event handling, user interfaces (e.g., windowing, menus, dialogs, etc.), security, authentication, verification, processes and threads, memory management, and so on. The object model services 146(2) provide interfacing with other objects to perform various tasks. Calls made to the API layer 142 are handed to the common language runtime layer 144 for local execution by the operating system 146(1) and/or object model services 146(2).
[0039] The API 142 groups API functions into multiple namespaces. Namespaces essentially define a collection of classes, interfaces, delegates, enumerations, and structures, which are collectively called "types", that provide a specific set of related functionality. A class represents managed heap allocated data that has reference assignment semantics. A delegate is an object oriented function pointer. An enumeration is a special kind of value type that represents named constants. A structure represents static allocated data that has value assignment semantics. An interface defines a contract that other types can implement.
[0040] By using namespaces, a designer can organize a set of types into a hierarchical namespace. The designer is able to create multiple groups from the set of types, with each group containing at least one type that exposes logically related functionality. In the exemplary implementation, the API 142 is organized to include three root namespaces. It should be noted that although only three root namespaces are illustrated in FIG. 2, additional root namespaces may also be included in API 142. The three root namespaces illustrated in API 142 are: a first namespace 200 for a presentation subsystem (which includes a namespace 202 for a user interface shell), a second namespace 204 for web services, and a third namespace 206 for a file system. Each group can then be assigned a name. For instance, types in the presentation subsystem namespace 200 can be assigned the name "Windows", and types in the file system namespace 206
can be assigned names "Storage". The named groups can be organized under a single "global root" namespace for system level APIs, such as an overall System namespace. By selecting and prefixing a top level identifier, the types in each group can be easily referenced by a hierarchical name that includes the selected top level identifier prefixed to the name of the group containing the type. For instance, types in the file system namespace 206 can be referenced using the hierarchical name "System.Storage". In this way, the individual namespaces 200, 204, and 206 become major branches off of the System namespace and can carry a designation where the individual namespaces are prefixed with a designator, such as a "System." prefix.
[0041] The presentation subsystem namespace 200 pertains to programming and content development. It supplies types that allow for the generation of applications, documents, media presentations and other content. For example, presentation subsystem namespace 200 provides a programming model that allows developers to obtain services from the operating system 146(1) and/or object model services 146(2).
[0042] The shell namespace 202 pertains to user interface functionality. It supplies types that allow developers to embed user interface functionality in their applications, and further allows developers to extend the user interface functionality.
[0043] The web services namespace 204 pertains to an infrastructure for enabling creation of a wide variety of applications, e.g. applications as simple as a chat application that operates between two peers on an intranet, and/or as complex as a scalable Web service for millions of users. The described infrastructure is advantageously highly variable in that one need only use those parts that are appropriate to the complexity of a particular solution. The infrastructure provides a foundation for building message-based applications of various scale and complexity. The infrastructure or framework provides APIs for basic messaging, secure messaging, reliable messaging and transacted messaging. In the embodiment described below, the associated APIs have been factored into a hierarchy of namespaces in a manner that has been carefully crafted to balance utility, usability, extensibility and versionability.
[0044] The file system namespace 206 pertains to storage. It supplies types that allow for information storage and retrieval.
[0045] In addition to the framework 132, programming tools 210 are provided to assist the developer in building Web services and/or applications. One example of the programming tools 210 is Visual Studio.TM., a multi-language suite of programming tools offered by Microsoft Corporation.
[0046] Root API Namespaces
[0047] FIG. 3 shows a portion of the presentation subsystem 200 in more detail. In one embodiment, the namespaces are identified according to a hierarchical naming convention in which strings of names are concatenated with periods. For instance, the presentation subsystem namespace 200 is identified by the root name "System.Windows". Within the "System.Windows" namespace is another namespace for various controls, identified as "System.Windows.Controls", which further identifies another namespace for primitives (not shown) known as "System.Windows.Controls.Primitives". With this naming convention in mind, the following provides a general overview of selected namespaces of the API 142, although other naming conventions could be used with equal effect.
[0048] As shown in FIG. 3, the presentation subsystem 200 includes multiple namespaces. The namespaces shown in FIG. 3 represent a particular embodiment of the presentation subsystem 200. Other embodiments of the presentation subsystem 200 may include one or more additional namespaces or may omit one or more of the namespaces shown in FIG. 3.
[0049] The presentation subsystem 200 is the root namespace for much of the presentation functionality of the API 142. A controls namespace 310
includes controls used to build a display of information, such as a user interface, and classes that allow a user to interact with an application. Example controls include "Button" that creates a button on the display, "RadioButton" that generates a radio-style button on the display, "Menu" that creates a menu on the display, "ToolBar" that creates a toolbar on the display, "Image" that generates an image on the display and "TreeView" that creates a hierarchical view of information.
[0050] Certain controls are created by nesting and arranging multiple elements. The controls have a logical model that hides the elements used to create the controls, thereby simplifying the programming model. The controls can be styled and themed by a developer or a user (e.g., by customizing the appearance and behavior of user interface buttons). Some controls have addressable components that allow an individual to adjust the style of individual controls. Additionally, the controls can be sub-classed and extended by application developers and component developers. The controls are rendered using vector graphics such that they can be resized to fit the requirements of a particular interface or other display. The controls are capable of utilizing animation to enhance, for example, the interactive feel of a user interface and to show actions and reactions.
[0051] Controls Namespace
[0052] The controls namespace 310 includes one or more panels, which are controls that measure and arrange their children (e.g., nested elements). For example, a "DockPanel" panel arranges children by docking each child to the top, left, bottom or right side of the display, and fills-in the remaining space with other data. For example, a particular panel may dock menus and toolbars to the top of the display, a status bar to the bottom of the display, a folder list to the left side of the display, and fills the rest of the space with a list of messages.
[0053] As mentioned above, System.Windows.Controls.Primitives is a namespace that includes multiple controls that are components typically used by developers of the controls in the System.Windows.Controls namespace and by developers creating their own controls. Examples of these components include "Thumb and RepeatButton". "ScrollBar", another component, is created using four repeat buttons (one for "line up", one for "line down", one for "page up", and one for "page down") and a "Thumb" for dragging the current view to another location in the document. In another example, "ScrollViewer" is a control created using two "ScrollBars" and one "ScrollArea" to provide a scrollable area.
[0054] The following list contains example classes exposed by the System.Windows.Controls namespace. These classes allow a user to interact with, for example, an application through various input and output capabilities as well as additional display capabilities.
[0055] AccessKey--AccessKey is a FrameworkElement element that wraps a character, indicating that it is to receive keyboard cue decorations denoting the character as a keyboard mnemonic. By default, the keyboard cue decoration is an underline.
[0056] Audio--Audio Element.
[0057] Border--Draws a border, background, or both around another element.
[0058] Button--Represents the standard button component that inherently reacts to the Click event.
[0059] Canvas--Defines an area within which a user can explicitly position child elements by coordinates relative to the Canvas area.
[0060] CheckBox--Use a CheckBox to give the user an option, such as true/false. CheckBox allows the user to choose from a list of options. CheckBox controls let the user pick a combination of options.
[0061] CheckedChangedEventArgs--This CheckedChangedEventArgs class contains additional information about the CheckedChangedEvent event.
[0062] CheckStateChangedEventArgs--This CheckStateChangedEventArgs class contains additional information about the CheckStateChangedEvent event.
[0063] ClickEventArgs--Contains information about the Click event.
[0064] ColumnStyle--Represents a changeable ColumnStyle object.
[0065] ColumnStyles--Changeable pattern IList object that is a collection of Changeable elements.
[0066] ComboBox--ComboBox control.
[0067] ComboBoxItem--Control that implements a selectable item inside a ComboBox.
[0068] ContactPickerDialog--Allows a user to select one or more contacts.
[0069] ContactPropertyRequest--Allows an application to request information about a contact property through a ContactPickerDialog. This class cannot be inherited.
[0070] ContactPropertyRequest Collection--Represents a collection of ContactPropertyRequest objects.
[0071] ContactSelection--Information about a selected contact from Microsoft.RTM. Windows.RTM. File System, code-named "WinFS" or Microsoft Active Directory.RTM..
[0072] ContactSelectionCollection--Represents a collection of ContactSelection objects.
[0073] ContactTextBox--An edit control that supports picking contacts or properties of contacts.
[0074] ContactTextBoxSelectionChangedEventArgs--Arguments for the ContactTextBoxSelectionChanged event.
[0075] ContactTextBoxTextChangedEventArgs--Arguments for the ContactTextBoxTextChanged event.
[0076] ContactTextBoxTextResolvedEventArgs--Arguments for the TextResolvedToContact event.
[0077] ContentChangedEventArgs--The event arguments for ContentChangedEvent.
[0078] ContentControl--The base class for all controls with a single piece of content.
[0079] ContentPresenter--ContentPresenter is used within the style of a content control to denote the place in the control's visual tree (chrome template) where the content is to be added.
[0080] ContextMenu--Control that defines a menu of choices for users to invoke.
[0081] ContextMenuEventArgs--The data sent on a ContextMenuEvent.
[0082] Control--Represents the base class for all user-interactive elements. This class provides a base set of properties for its subclasses.
[0083] Decorator--Base class for elements that apply effects onto or around a single child element, such as Border.
[0084] DockPanel--Defines an area within which you can arrange child elements either horizontally or vertically, relative to each other.
[0085] DragDeltaEventArgs--This DragDeltaEventArgs class contains additional information about the DragDeltaEvent event.
[0086] FixedPanel--FixedPanel is the root element used in fixed-format documents to contain fixed pages for pagination. FixedPanel displays paginated content one page at a time or as a scrollable stack of pages.
[0087] FlowPanel--FlowPanel is used to break, wrap, and align content that exceeds the length of a single line. FlowPanel provides line-breaking and alignment properties that can be used when the flow of the container's content, Text for example, is likely to exceed the length of a single line.
[0088] Frame--An area that can load the contents of another markup tree.
[0089] Generator--Generator is the object that generates a UI on behalf of an ItemsControl, working under the supervision of a GeneratorFactory.
[0090] GeneratorFactory--A GeneratorFactory is responsible for generating the UI on behalf of an ItemsControl. It maintains the association between the items in the control's ItemsCollection (flattened view) and the corresponding UIElements. The control's item-container can ask the factory for a Generator, which does the actual generation of UI.
[0091] GridPanel--Defines a grid area consisting of columns and rows.
[0092] HeaderItemsControl--The base class for all controls that contain multiple items and have a header.
[0093] HorizontalScrollBar--The Horizontal ScrollBar class.
[0094] HorizontalSlider--The Horizontal Slider class.
[0095] HyperLink--The HyperLink class implements navigation control. The default presenter is TextPresenter.
[0096] Image--Provides an easy way to include an image in a document or an application.
[0097] IncludeContactEventArgs--Arguments passed to handlers of the ContactPickerDialog.IncludeContact event.
[0098] ItemCollection--Maintains a collection of discrete items within a control. Provides methods and properties that enable changing the collection contents and obtaining data about the contents.
[0099] ItemsChangedEventArgs--The ItemsChanged event is raised by a GeneratorFactory to inform layouts that the items collection has changed.
[0100] ItemsControl--The base class for all controls that have multiple children.
[0101] ItemsView--ItemsView provides a flattened view of an ItemCollection.
[0102] KeyboardNavigation--KeyboardNavigation class provide methods for logical (Tab) and directional (arrow) navigation between focusable controls.
[0103] ListBox--Control that implements a list of selectable items.
[0104] ListItem--Control that implements a selectable item inside a ListBox.
[0105] Menu--Control that defines a menu of choices for users to invoke.
[0106] MenuItem--A child item of Menu. MenuItems can be selected to invoke commands. MenuItems can be separators. MenuItems can be headers for submenus. MenuItems can be checked or unchecked.
[0107] PageViewer--Represents a document-viewing composite control that contains a pagination control, a toolbar, and a page bar control.
[0108] PaginationCompleteEventArgs--The event arguments for the PaginationCompleteEvent.
[0109] PaginationProgressEventArgs--The event arguments for the PaginationProgressEvent.
[0110] Pane--Provides a way to define window properties in a markup language (e.g., "XAML") without launching a new window.
[0111] Panel--Provides a base class for all Panel elements. In order to instantiate a Panel element, use the derived concrete class.
[0112] RadioButton--RadioButton implements an option button with two states: true or false.
[0113] RadioButtonList--This control serves as a grouping control for RadioButtons and is the piece that handles RadioButton mutual exclusivity. The RadioButtonList inherits from Selector. The RadioButtonList is essentially a Single SelectionMode Selector and the concept of Selection (from Selector) is keyed off of the Checked property of the RadioButton it is grouping.
[0114] RowStyle--Changeable pattern Changeable elements.
[0115] RowStyles--Changeable pattern IList object that is a collection of Changeable elements.
[0116] ScrollChangeEventArgs--The ScrollChangeEventsArgs describe a change in scrolling state.
[0117] ScrollViewer--
[0118] SelectedltemsCollection--A container for the selected items in a Selector.
[0119] SelectionChangedEventArgs--The inputs to a selection changed event handler.
[0120] SimpleText--SimpleText is a lightweight, multi-line, single-format text element intended for use in user interface (UI) scenarios. SimpleText exposes several of the same formatting properties as Text and can often be used for a performance gain at the cost of some versatility.
[0121] StyleSelector--StyleSelector allows the app writer to provide custom style selection logic. For example, with a class Bug as the Content, use a particular style for Pri1 bugs and a different style for Pri2 bugs. An application writer can override the SelectStyle method in a derived selector class and assign an instance of this class to the StyleSelector property on ContentPresenter class.
[0122] Text--Represents a Text control that enables rendering of multiple formats of Text. Text is best used within an application UI; more advanced text scenarios benefit from the additional feature set of TextPanel. In most cases where relatively simple text support is required, Text is the preferred element because of its lightweight nature and range of features.
[0123] TextBox--Represents the control that provides an editable region that accepts text input.
[0124] TextChangedEventArgs--The TextChangedEventArgs class represents a type of RoutedEventArgs that are relevant to events raised by TextRange.SetText( ).
[0125] TextPanel--Formats, sizes, and draws text. TextPanel supports multiple lines of text and multiple text formats.
[0126] ToolTip--A control to display information when the user hovers over a control.
[0127] ToolTipEventArgs--The data sent on a ToolTipEvent.
[0128] TransformDecorator--TransformDecorator contains a child and applies a specified transform to it. TransformDecorator implements logic to measure and arrange the child in its local (pre-transform) coordinates such that after the transform, the child fits tightly within the decorator's space and uses maximal area. The child therefore needs to have no knowledge that a transform has been applied to it.
[0129] UIElementCollection--A UIElementCollection is a ordered collection of UIElements.
[0130] ValueChangedEventArgs--This ValueChangedEventArgs class contains additional information about the ValueChangedEvent event.
[0131] VerticalScrollBar--The Vertical ScrollBar class.
[0132] VerticalSlider--The Vertical Slider class.
[0133] Video--Plays a streaming video or audio file in a specified rectangle within the current user coordinate system.
[0134] VisibleChangedEventArgs--The VisibleChangedEventArgs class contains additional information about the VisibleChangedEvent event.
[0135] The System.Windows.Controls namespace also contains various enumerations. The following list contains example enumerations associated with the System.Windows.Controls namespace.
[0136] CharacterCase--Specifies the case of characters in a TextBox control when the text is typed.
[0137] CheckState--Specifies the state of a control, such as a check box, that can be checked, unchecked, or set to an indeterminate state.
[0138] ClickMode--Specifies when the Click event should fire.
[0139] ContactControlPropertyPosition--Controls the position and display of the property of the contact.
[0140] ContactPickerDialogLayout--Specifies how the ContactPickerDialog should display selected properties.
[0141] ContactPropertyCategory--Specifies which value to treat as the default in the case where a property has multiple values for the user could choose from. For example, if "Work" is specified as the preferred category when requesting a phone number property from the ContactPickerDialog, and the user selects a contact with both a work and home phone number, the work phone number appears as the default selection. The user can then use the UI to choose the home phone number instead.
[0142] ContactPropertyType--Specifies a property of a contact that the ContactPickerDialog can ask the user for.
[0143] ContactType--Specifies which contact types to display in the ContactPickerDialog.
[0144] Direction--This enumeration is used by the GeneratorFactory and Generator to specify the direction in which the generator produces UI.
[0145] Dock--Specifies the Dock position of a child element within a DockPanel.
[0146] GeneratorStatus--This enumeration is used by the GeneratorFactory to indicate its status.
[0147] KeyNavigationMode--The type of TabNavigation property specify how the container will move the focus when Tab navigation occurs.
[0148] MenuItemBehavior--Defines the different behaviors that a MenuItem could have.
[0149] MenuItemType--Defines the different placement types of MenuItems.
[0150] Orientation--Slider orientation types.
[0151] PageViewerFit--Selects how pages should be fit into the PageViewer's Client area.
[0152] PageViewerMode--Selects the current PageViewer mode Reflected in the mode dropdown.
[0153] ScrollerVisibility--ScrollerVisibilty defines the visibility behavior of a scrollbar.
[0154] SelectionMode--Specifies the selection behavior for the ListBox.
[0155] "Position" is an example structure associated with the System.Windows.Controls namespace. A user of the Generator describes positions using this structure. For example: To start generating forward from the beginning of the item list, specify position (-1, 0) and direction Forward. To start generating backward from the end of the list, specify position (-1, 0) and direction Backward. To generate the items after the element with index k, specify position (k, 0) and direction Forward.
[0156] The following list contains example delegates associated with the System.Windows.Controls namespace.
[0157] CheckedChangedEventHandler--This delegate is used by handlers of the CheckedChangedEvent event.
[0158] CheckStateChangedEventHandler--This delegate is used by handlers of the CheckStateChangedEvent event.
[0159] ClickEventHandler--Represents the methods that handle the Click event.
[0160] ContactTextBoxSelectionChangedEventHandler--A delegate handler for the ContactTextBoxSelectionChanged event.
[0161] ContactTextBoxTextChangedEventHandler--A delegate handler for the ContactTextBoxTextChanged event.
[0162] ContactTextBoxTextResolvedEventHandler--A delegate handler for the TextResolvedToContact event.
[0163] ContentChangedDelegate--Delegate for the ContentChangedEvent.
[0164] ContextMenuEventHandler--The callback type for handling a ContextMenuEvent.
[0165] DragDeltaEventHandler--This delegate is used by handlers of the DragDeltaEvent event.
[0166] IncludeContactEventHandler--Handler for ContactPickerDialog.Include- Contact event.
[0167] ItemsChangedEventHandler--The delegate to use for handlers that receive ItemsChangedEventArgs.
[0168] OpenedEventHandler--Handler for ContactPickerDialog.Opened event.
[0169] PaginationCompleteDelegate--Delegate for the PaginationCompleteEvent.
[0170] PaginationProgressDelegate--Delegate for the PaginationProgressEvent.
[0171] ScrollChangeEventHandler--This delegate is used by handlers of the ScrollChangeEvent event.
[0172] SelectionChangedEventHandler--The delegate type for handling a selection changed event.
[0173] TextChangedEventHandler--The delegate to use for handlers that receive TextChangedEventArgs.
[0174] ToolTipEventHandler--The callback type for handling a ToolTipEvent.
[0175] ValueChangedEventHandler--This delegate is used by handlers of the ValueChangedEvent event.
[0176] VisibleChangedEventHandler--This delegate is used by handlers of the VisibleChangedEvent event.
[0177] Another namespace, System.Windows.Controls.Atoms, is a sub-namespace of the System.Windows.Controls namespace. System.Windows.Controls.Atoms includes associated controls, event arguments and event handlers. The following list contains example classes associated with the System.Windows.Controls.Atoms namespace.
[0178] PageBar--Represents a scrollable pagination control.
[0179] PageElement--Renders a specific page of paginated content. The page to be rendered is specified by the PageSource property.
[0180] PageHoveredEventArgs--PageHoveredEventArgs provides information about where the mouse pointer is hovering.
[0181] PageScrolledEventArgs--The PageScrolledEventArgs contains info pertaining to the PageScrolled Event.
[0182] PageSelectedEventArgs--The PageSelectedEvent is fired when a new row/column range selection is made.
[0183] PageSelector--PageSelector: Allows the user to select a range of rows/columns of pages to be displayed.
[0184] PageSource--Identifies the source of the content to be paginated. It also provides properties and methods for formatting paginated content.
[0185] The following list contains example delegates associated with the System.Windows.Controls.Atoms namespace.
[0186] PageHoveredEventHandler--This delegate is used by handlers of the PageHoveredEvent event.
[0187] PageScrolledEventHandler--This delegate is used by handlers of the PageHovered event.
[0188] PageSelectedEventHandler--This delegate is used by handlers of the PageSelectedEvent event.
[0189] A System.Windows.Controls.Primitives namespace is another sub-namespace of the System.Windows.Controls namespace. As mentioned above, the Primitives sub-namespace includes controls that are intended to be used as primitives by other more complex controls. The following list contains example classes associated with the System.Windows.Controls- .Primitives namespace.
[0190] ButtonBase--When overridden in a derived class, defines the relevant events and properties, and provides handlers for the relevant input events.
[0191] Popup--A control that creates a fly-out window that contains content.
[0192] RangeBase--Represents the base class for elements that have a specific range. Examples of such elements are scroll bars and progress bars. This class defines the relevant events and properties, and provides handlers for the events.
[0193] RepeatButton--RepeatButton control adds repeating semantics of when the Click event occurs.
[0194] ScrollArea--ScrollArea is the effective element for scrolling. It contains content that it clips and provides properties to expose the content's offset and extent. It also provides default input handling such that scrolling can be driven programatically or via keyboard or mouse wheel.
[0195] ScrollBar--The ScrollBar class.
[0196] Selector--The base class for controls that select items from among their children.
[0197] Slider--The Slider class.
[0198] Thumb--The thumb control enables basic drag-movement functionality for scrollbars and window resizing widgets. "IEnsureVisible" is an example interface associated with the System.Windows.Controls.Primitives namespace. IEnsureVisible is implemented on a visual to scroll/move a child visual into view.
[0199] The following list contains example enumerations associated with the System.Windows.Controls.Primitives namespace.
[0200] ArrowButtonStates--
[0201] CloseModeType--Describes how a popup should behave to various mouse events.
[0202] Part--The Part enumeration is used to indicate the semantic use of the controls that make up the scroll bar.
[0203] PartStates--ScrollBar Part States.
[0204] PlacementType--Describes where a popup should be placed on screen.
[0205] SizeBoxStates--
[0206] Documents Namespace
[0207] A documents namespace 312 is a collection of semantic and formatting elements that are used to create richly formatted and semantically rich documents. In one embodiment, an "element" is a class that is primarily used in conjunction with a hierarchy of elements (referred to as a "tree"). These elements can be interactive (e.g., receiving user input via keyboard, mouse or other input device), can render images or objects, and can assist with the arrangement of other elements. Example elements include a "Block" element that implements a generic block, a "Body" element that represents content that includes the body of a table, a "Cell" element that contains tabular data within a table, a "Header" element that represents the content included in the header of a table, and a "PageBreak" element that is used to break content across multiple pages.
[0208] The following list contains example classes exposed by the System.Windows.Documents namespace.
[0209] AdaptiveMetricsContext--AdaptiveMetricsContext provides the root element for adaptive-flow-format documents. Once a child panel is encapsulated in an AdaptiveMetricsContext element, the content of the panel is processed by the Reading Metrics Engine (RME). The size of the child panel is used to calculate the number and size of any columns as well as optimum font sizes and line heights.
[0210] Block--Implements a generic block element that does not induce default rendering behavior.
[0211] BlockElement--Implements a base class for all Block elements.
[0212] Body--Represents the content that comprises the body of a Table element.
[0213] Bold--Implements a Bold element derived from Inline.
[0214] BreakRecord--Stores information necessary to continue formatting paginated content across page breaks. Inherit from this class to provide pagination support. This is an abstract class.
[0215] Cell--Cells contain tabular data within a Table. Cell elements are contained within a Row.
[0216] CellCollection--Ordered collection of table cells.
[0217] Column--The Column element is used to apportion the contents of a GridPanel or Table.
[0218] ColumnCollection--A ColumnCollection is an ordered collection of Columns.
[0219] ColumnResult--Represents a column's view-related information.
[0220] ContainerParagraphResult--Provides access to calculated layout parameters for a Paragraph object which contains only other Paragraph objects.
[0221] ContentPosition--Represents the position of content within a paragraph. Inherit from this class to describe the position of associated content. This is an abstract class.
[0222] Document--The purpose of the Document class is to decouple the content of a document from the UI "chrome" that surrounds it. "Decoupling" means that you can author a document without thinking about (and without committing to) its UI. The Document class holds document content, typically a TextPanel or a FixedPanel and its children. A visual tree (by default, a PageViewer) is associated with this element through the WPP control styling mechanism.
[0223] DocumentPage--Represents layout information for a control associated with a page of a document subject to pagination. Inherit from this class to implement to describe the layout information for these controls. This is an abstract class.
[0224] DocumentPageParagraphResult--Provides access to calculated layout parameters for objects affected by pagination.
[0225] FindEngine--Base class for find algorithms.
[0226] FindEngineFactory--Find algorithms factory.
[0227] FixedPage--Provides access to a single page of content within a fixed-format layout document.
[0228] Footer--Represents the content that comprises the footer of a Table element.
[0229] Header--Represents the content that comprises the header of a Table element.
[0230] Heading--Implements a block-level element that renders text as a heading.
[0231] HyphenationDictionary--HyphenationDictionary represents a dictionary for the purpose of providing hyphenation support within applications. It can contain both an inline dictionary and a reference to an external dictionary. The inline dictionary has higher priority and will be applied before entries in the external dictionary.
[0232] Hyphenator--The Hyphenator object maintains reference to hyphenation data within a HyphenationDictionary and also performs hyphenation.
[0233] Inline--Implements a generic Inline element that does not induce any default rendering behavior.
[0234] InlineElement--Implements a generic inline element as base class for all inline elements.
[0235] Italic--Implements an Italic element derived from Inline.
[0236] LineBreak--Represents a markup element that forces a line break.
[0237] LineResult--Provides access to calculated information of a line of text.
[0238] List--Implements a List element. Lists are block-level elements designed to be formatted with markers such as bullets or numbering.
[0239] ListElementItem--Implements a ListElementltem, which supports markers such as bullets or numbering.
[0240] Note--Implements a Note element, which is analagous to the note element in HTML.
[0241] PageBreak--Represents a markup element used to break content across various pages.
[0242] PageDescriptor--Implements PageDescriptor, which stores information necessary to create paginated layout.
[0243] Paragraph--Implements a block-level element used to render text in a paragraph. Rendering behavior is analagous to that of the paragraph element in HTML.
[0244] ParagraphResult--Provides access to calculated layout parameters for a Paragraph object.
[0245] Row--Defines a row within a GridPanel or Table element.
[0246] RowCollection--RowCollection represents an ordered collection of Rows.
[0247] RowGroup--Specifies property defaults for a group of rows in a Table or GridPanel.
[0248] Section--Implements a generic container element. Rendering behavior is analagous to the div element in HTML.
[0249] SmallCaps--Implements an inline SmallCaps element. SmallCaps are typographic forms that render as small capital versions of letters for emphasis, as in a title.
[0250] Subscript--Represents an inline Subscript element. Subscript characters are written immediately below, below and to the left, or below and to the right of other characters.
[0251] Superscript--Represents an inline Superscript element. Superscript characters are typically letters or numbers and render immediately above, above and to the left, or above and to the right of other characters.
[0252] Table--Table is used to display complex data in tabular form using a markup language (e.g., "XAML").
[0253] TextArray--Base API for text access and manipulation.
[0254] TextChangedEventArgs--The TextChangedEventArgs defines the event arguments sent when a TextArray is changed.
[0255] TextElement--TextElement provides TextRange facilities for the TextTree. It is an immutable, continuous TextRange with fixed endpoints. It provides ContentElement Input, Focus and Eventing support. It also provides DependencyObject property support.
[0256] TextNavigator--This can enumerate text content. Implements a movable TextPosition. It can move by text run or be positioned at a know location in text.
[0257] TextParagraphResult--Provides access to calculated layout parameters for text, including floated objects and figures.
[0258] TextPosition--This is an object representing a certain position in a TextArray. A compact object representing a position in text automatically maintains position when text changes. Comparison operations are only applicable to positions within same TextArray (same Context) TextPosition can be static or movable. IsChangeable property tells the kind of position.
[0259] TextRange--TextRange is an abstract class providing generic association of zero or more subranges with properties. Subrange manipulation is defined on derived classes.
[0260] TextRangeMovable--TextRangeMovable is an abstract class for movable TextRanges. It adds the ability to move the start and end points based on TextUnits.
[0261] TextTreeChangedEventArgs--The TextChangedEventArgs defines the event arguments sent when a TextArray is changed.
[0262] TextTreeDumper--TreeDumper is a tree test class that is public due to packaging issues.
[0263] TextTreeNavigator--This is an object representing a certain moveable position in a TextTree. It is a specific implementation of TextNavigator for use only in the TextTree.
[0264] TextTreePosition--This is an object representing a certain immutable position in a TextTree. It is a specific implementation of TextPosition for use only in the TextTree.
[0265] TextTreeRange--Provides TextRange facilities for the TextTree. It is a mutable, continuous TextRange with movable endpoints.
[0266] TextTreeRangeContentEnumerator--Enumerator on object children directly under a TextTreeRange. TextUnit--Extensible unit of text navigation.
[0267] TextUnits--Commonly used text units for TextPosition and TextRange.
[0268] Typography--Provides access to a rich set of OpenType typography properties.
[0269] UIElementParagraphResult--The ParagraphResult for a paragraph which is composed entirely of a UIElement. Used for Floaters, Figures and embedded block level UIElements.
[0270] Underline--Implements an Underline element derived from InlineElement.
[0271] The following list contains example interfaces associated with the System.Windows.Documents namespace.
[0272] IDocumentContentHost--Implement this interface on a content host so that children of that host can notify the host when content is changing.
[0273] IDocumentFormatter--Implement this interface on an element to provide support for document features such as pagination.
[0274] ITextDocumentResult--Implement this interface to maintain column information for a document.
[0275] ITextParagraphResult--Implement this interface to provide text and positioning information for text paragraphs.
[0276] The following list contains example enumerations associated with the System.Windows.Documents namespace.
[0277] ElementEdge--This identifies the edge of an object where a TextPosition is located.
[0278] FindAdvancedOptions--The advanced search options used by FindAlgorithm (search initialization) and TextRangeMovable/TextSelection (simplified search execution) classes.
[0279] FindOptions--The simplified search options used by TextBox.Find methods.
[0280] LogicalDirection--LogicalDirection defines a logical direction for movement in text. It is also used to determine where a TextPosition will move when content is inserted at the TextPosition.
[0281] TextArrayRunType--This identifies the run where a TextPosition is located, taking LogicalDiretion into account.
[0282] TextChangeOptions--Possible text changes for CanChangeText.
[0283] TextMoveOptions--This controls the movement of TextNavigator by specifying conditions to halt navigation.
[0284] The following list contains example delegates associated with the System.Windows.Documents namespace.
[0285] ObjectCloneDelegate--Callback method to provide a clone or copy of a DependencyObject when a portion of a TextArray is being copied or moved.
[0286] TextChangedEventHandler--The TextChangedEventHandler delegate is called with TextChangedEventArgs every time content is added to or removed from the TextTree.
[0287] Shapes Namespace
[0288] A shapes namespace 314 is a collection of vector graphics elements that is used to create images and objects. The use of vector graphics elements allows the elements to be easily resized to fit the requirements of a particular interface or display device. Example elements include an "Ellipse" element that draws an ellipse, a "Line" element that draws a straight line between two points, a "Rectangle" element that draws a rectangle, and a "Polygon" element that draws a polygon as a connected series of lines that form a closed shape.
[0289] The following list contains example classes exposed by the System.Windows.Shapes namespace.
[0290] Ellipse--Draws an ellipse.
[0291] Glyphs--Represents a glyph shape in a markup language such as "XAML". Glyphs are used to represent fonts.
[0292] Line--Draws a straight line between two points.
[0293] Path--Draws a series of connected lines and curves.
[0294] Polygon--Draws a polygon (a connected series of lines that forms a closed shape).
[0295] Polyline--Draws a series of connected straight lines.
[0296] Rectangle--Draws a rectangle.
[0297] Shape--An abstract class that provides base functionality for shape elements, such as ellipse, polygon and rectangle.
[0298] Data Namespace
[0299] A data namespace 316 includes classes and interfaces used to bind properties of elements to data sources, data source classes, and data-specific implementations of data collections and views. These classes and interfaces are also used to handle exceptions in data entry and allow runtime creation of a user interface based on information in various data sources. Data can be displayed in textual form or can be utilized to change the formatting of the display, such as displaying dollar amounts in red if they are negative. Example classes include a "Bind" class that represents a binding declaration object that manages bindings between a dynamic property user interface and source data, and an "XmlDataSource" class that serves as a data source for data binding to XML content nodes.
[0300] Object-oriented applications typically represent data by classes that define both the value of a piece of data and the operations that can be performed on that data. The term "data item" refers to one such object. Applications can handle individual data items or collections of data items. They may use data items in three ways: (a) converting data from external sources such as file systems, remote servers, databases, etc. into the corresponding in-memory data items, and converting modified data items back into the form expected by these sources; (b) operating on the data items using a combination of data-centric and application-centric logic; (c) presenting the data embodied by the data items to the user through a user interface. Data namespace 316 provides support for the first and third of these tasks.
[0301] The first task, obtaining data from external sources, is supported by "data source" objects. A data source object is typically defined as a page-wide or application-wide resource, and serves as the gateway to the data. Data sources implement an IDataSource interface, which defines a standard mechanism by which the classes in the data namespace get access to the data. A particular data source object implements logic for retrieving the actual data by using mechanisms appropriate for the particular source. In one embodiment, the data namespace includes four data source classes:
[0302] 1. XmlDataSource, for retrieving data represented as XML
[0303] 2. SqlDataSource, for retrieving data from SQL databases, such as Microsoft SQLServer
[0304] 3. WinFSDataSource, for retrieving data from the WinFS service
[0305] 4. ObjectDataSource, for retrieving data from an arbitrary object defined by the application
[0306] Applications can also define their own data source classes that are tailored to special-purpose sources.
[0307] A data source class is responsible for retrieving data from an external source and converting it into one or more data items suitable for use by the binding classes. If a collection of data items is needed, the application can use any of the standard collection classes from the .Net Framework such as Array, ArrayList, Hashtable, etc., any of the data-centric collection classes from the System.Data namespace such as Dataset, or a data-centric collection class from the data namespace such as ArrayListDataCollection. The latter classes support change notifications; i.e., when the application changes the collection by adding an item, removing an item, sorting the collection, etc., the collection sends a notification. The binding classes listen for these notifications and automatically update the user interface to reflect the change.
[0308] Once the data has been converted to in-memory data items, the application can perform computations using the items and can modify the items as a result of the computations. These actions are performed using a combination of data-centric operations (defined by the data item classes) and application-centric operations (defined by the application itself). The actions may be initiated by the application automatically, or in response to an action of the user. Special support or cooperation from the data namespace is not necessary, thereby providing a clean separation of logic and presentation within the application.
[0309] The third data-related task, presenting the data through the user interface, is supported by the "binding" classes of the data namespace. These classes enable the application to describe the correspondence (binding) between a data item property (the source) and a user interface property (the target). The term data-binding (or simply binding) refers to the establishment of such a correspondence. For example, an application may choose to data-bind the Text property of a Textbox control to the CustomerName property of a data item. Having done so, the control will automatically display the customer's name, updating the display whenever the application changes the data item, and updating the data item whenever the user types a new name into the control.
[0310] This kind of correspondence is described using the Bind class, and implemented using the Binding class. Any number of UI properties can share the same description (Bind), but each property has its own unique Binding that holds the state for that particular instance. The description includes the following information about the desired correspondence:
[0311] Path--the name of the data item property to use as the source of the binding. This can be a simple property name, or a more complicated expression involving sub-objects and indexers (e.g., when the source property has a value of complex type) such as "ShippingAddress.Line[2]". When the data source is XML, the path is an XPath expression.
[0312] BindType--whether the correspondence is one-way, two-way, or one-time. In a one-way binding, changes to the data item cause updates to the user interface property; data flows one way--from the source to the target. In a two-way binding the data flows in both directions; in addition to the one-way behavior, changes to the user interface property cause updates to the data item property. In a one-time binding, the data item property is used to initialize the user interface property, but changes do not propagate in either direction.
[0313] Source--a description of where to obtain the source data item. This can be from a data source object, from some other user interface element, or from the value of the target element's DataContext property.
[0314] UpdateType--when to update the source property in a two-way binding: one of Immediate, OnLostFocus, or Explicit. Immediate updates happen as soon as the user interface property changes. OnLostFocus updates are delayed until the target element loses keyboard focus--this is appropriate for a TextBox control, to avoid the expense of updating after every keystroke. Explicit updates happen when the application explicitly calls for them.
[0315] Transformer--an object that implements the IDataTransformer interface. This gives the application a way to modify the data item value before using it in the user interface. The modification can be a simple type conversion (e.g., in a binding of the Background property to the BalanceOwed data property, the application can convert a negative balance to a red background and a positive balance to green), or an application-specific conversion (e.g., in a binding of the Text property to the NetWorth data property, the application can display "Rich" if the NetWorth exceeds $1M, "Bourgeois" if the NetWorth lies between $100K and $1M, and "Poor" if the NetWorth is less than $100K). Transformers are a simple yet powerful tool that help separate presentation from data.
[0316] All bindings except one-time rely on getting notified when the data property changes, so that the corresponding change can be made to the user interface. The binding classes recognize the IPropertyChange interface (from the System.ComponentModel namespace) as one way of implementing the required notifications.
[0317] The following tables list the members exposed by the System.Windows.Data namespace.
1
Classes ArrayListCollectionView Encapsulates the collection view support for the ArrayListDataCollection collection class. This class cannot be inherited. ArrayListDataCollection Provides a built-in implementation of an array-list data collection with an underlying collection-view interface. It also implements ICollectionChange to provide notification when items are added, items are removed, or the whole collection is refreshed. Bind Represents a bind declaration object, used to manage bindings between a dynamic property user interface (UI) and source data. Binding Provides access to the single run- time instance of a binding. This class cannot be inherited. BindingListCollectionView A collection view class used for Microsoft .RTM. ActiveX .RTM. Data Objects (ADO) data views. CollectionContainer Objects of this class hold an existing collection structure - for example, an ArrayListDataCollection or some other DataSet inside the ItemCollection. ContextAffinityCollectionView Implements a collection view that includes checks for context affinity. DataContextObjectRef Supports object references to objects being used as data context for a binding. This class cannot be inherited. DataSourceObjectRef Supports object references to data sources. This class cannot be inherited. DataTransferEventArgs Encapsulates arguments for data transfer events. The events are routed events that are handled specifically by a designated handler based on the DataTransferEventHandler delegate. ElementObjectRef Represents an object reference to an element, with the object being specified by its element ID. This class cannot be inherited. ExplicitObjectRef Represents an explicit object reference to an element. This class cannot be inherited. ListCollectionView Implements a collection view for collections based on IList. ObjectDataSource Serves as a data source for data binding. Bindable data items can be specified as common language runtime types. ObjectRef The abstract class that is used as the parent class of ElementObjectRef, ExplicitObjectRef, and TypeObjectRef. ParameterCollection Objects of this class hold the collection of named parameters (with their corresponding values) for an SqlDataSource. QueryCommand This class represents a single select statement to be submitted to the database. RefreshCompletedEventArgs Encapsulates the arguments passed either in the RefreshCompleted event of ObjectDataSource, or in the RefreshCompleted event of XmlDataSource. SqlCommandList A list of sql commands and the names of the tables that they should be used to fill. SqlDataSource SqlDataSource gets data from a Microsoft SQL Server for use in databinding. TransformerSource Allows resource reference to a transformer class that is defined as code- behind in the current application. TypeObjectRef Supports object reference by type. This class cannot be inherited. WinFSDataSource The WinFSDataSource facilitates databinding of data stored in WinFS with Avalon applications XmlDataNamespaceManager XmlDataNamespaceManager Class Used to declare namespaces to be used in Xml data binding XPath queries XmlDataSource Serves as a data source for data binding to Extensible Markup Language (XML) content nodes. XmlNamespace Declares an individual namespace within an XML data source.
[0318]
2
Interfaces IContains Used to create classes that declare filtering criteria for collection views. IDataSource Supports creation of data source objects. Data source objects are used for common representation of data for data binding. IDataTransformer Provides methods that enable client-side transformation of bound data.
[0319]
3
Enumerations BindFlags Describes special properties of a binding. See Using Bind Declarations for "Longhorn" markup language (code-named "XAML") usage. See BindType for the enumeration that is used to specify binding type (one-way, two-way and so on). BindStatus Status of a Binding. BindType Describes how changes in data values will transfer to and from source properties and target properties of a binding. SqlDataSourceMode The enumeration of the possible modes that SqlDataSource can have. The mode determines what sort of data is returned when the application retrieves the value from the Data property. UpdateType Specifies when updates to the data source (target-to-source data transfer) should occur in a binding. Setting these values will only be relevant if a binding's BindType is set to Two Way (or left as the default).
[0320]
4
Delegates DataChangedEventHandler Represents the method that handles the DataChanged event raised by data sources that implement IDataSource. DataTransferEventHandler Represents the method that handles a data transfer event raised by Binding. RefreshCompletedEventHandl- er Represents the method that handles the ObjectDataSource. RefreshCompleted and XmlDataSource. RefreshCompleted events.
[0321] Media Namespace
[0322] A media namespace 318 provides various media classes. Application developers as well as component developers may use these classes to develop various presentation functionality. Example classes in media namespace 318 include an "ImageEffect" class that permits certain imaging effects (e.g., blur and grayscale), and a "Brush" class that provides a mechanism for filling an area using solid colors, gradients, images, video, and the like.
[0323] The media namespace 318 includes a sub-namespace System.Windows.Media.Animation that includes services that allow a developer to animate properties and coordinate a set of animations with a set of timelines. An animation is an object that changes a value over a period of time. Animation effects include moving an object on the display, and changing the size, shape, or color of an object. Multiple animation classes are provided to implement various animation effects. Effects can be achieved by associating an animation with an element's property value. For example, to create a rectangle that fades in and out of view, one or more animations are associated with the opacity property of the rectangle.
[0324] The media namespace 318 also includes a sub-namespace System.Windows.Media.TextFormatting that provides various text services. For example, a "TextFormatter" text engine provides services for breaking text lines and formatting text presented on a display. "TextFormatter" is capable of handling different text character formats and paragraph styles as well as handling international text layout.
[0325] The following tables list example members exposed by the System.Windows.Media namespace.
5
Classes ArcSegment Represents an elliptical arc between two points. AudioData Enables playing of audio files according to the state of a time node. AudioDataConverter AudioDataConverter BezierSegment Represents a cubic Bzier curve drawn between two points. Brush Provides a generic means for filling an area using solid colors (SolidColorBrush), gradients (LinearGradientBrush, RadialGradientBrush), images (ImageBrush), video, and more. BrushConverter Used to convert a Brush object to or from another object type. Brushes Implements a set of predefined solid colors. CloseSegment Represents a line that connects the last point of a PathFigure object with its starting point. CodecFilter Filter for enumerating codecs. Only those codecs that match the properties will be enumerated. CodecInfo Information about a specific codec and a factory for creating the codec. This is returned from the codec enumerator. ColorCollection ColorCollectionConverter ColorCollectionConverter - Converter class for converting instances of other types to and from ColorCollection instances. ColorContext ColorConverter Used to convert a Color object to or from another object type. Colors Implements a set of predefined colors. ContainerVisual Manages a collection of Visual objects. DashArrays DashArrays - The DashArrays class is static, and contains properties for well known dash styles. DoubleCollection DoubleCollectionConverter DoubleCollectionConverter - Converter class for converting instances of other types to and from DoubleCollection instances. Drawing A Drawing is a list of 2d drawing primitives. DrawingBrush DrawingBrush - This TileBrush defines its content as a Drawing DrawingContext Drawing context. DrawingVisual Visual that contains graphical content to be drawn. EllipseGeometry Represents the geometry of a circle or ellipse. FontFamily Font family FormattedText The FormattedText class is a part of Avalon MIL easy text API, which is targeted at programmers needing to add some simple text to a MIL visual. Geometry An abstract class that provides base functionality for all geometry classes, such as EllipseGeometry, RectangleGeometry, and PathGeometry. The Geometry class of objects can be used for clipping, hit-testing, and rendering 2-D graphic data. GeometryCollection Represents a collection of Geometry objects. GetPageEventArgs class GetPageEventArgs GlyphRun Glyph run class GlyphTypeface Physical font face corresponds to a font file on the disk GradientBrush An abstract class that describes a gradient fill. Classes that derive from GradientBrush describe different ways of interpreting gradient stops. GradientStop Describes the location and color of a transition point in a gradient. GradientStopCollection Represents a collection of GradientStop gradient stops. HitTestParameters This is the base class for packing together parameters for a hit test pass. HitTestResult This base returns the visual that was hit during a hit test pass. HwndInterop HwndInterop HwndVisual HyphenationCandidate Describes one Hyphenation candidate. ICCProfile ImageBrush Fills an area with an image. This class may be used to specify images as the fill or background of other objects. ImageCodecCollection The collection of codecs (actually CodecInfos) on the system. ImageCodecEnumerator The enumerator for Image frames. ImageColorTransform ImageColorTransform Performs color management on an imaging pipeline. ImageData Contains an image and related data. ImageDataBuilder This object is used to build an ImageData object. ImageDecoder ImageDecoder is a container for image frames. Each image frame is an ImageSource. Unlike ImageSource, ImageDecoder is NOT an immutable object and can be re-initialized to a different image stream. However, any ImageSources (frames) that it returns should be immutable. ImageDecoderBmp The built-in Microsoft Bmp (Bitmap) Decoder. ImageDecoderGif The built-in Microsoft GIF Decoder. ImageDecoderIcon The built-in Microsoft Icon Decoder. ImageDecoderInternal For internal use only. ImageDecoderJpeg The built-in Microsoft Jpeg Decoder. ImageDecoderPng The built-in Microsoft PNG Decoder. ImageDecoderTiff The built-in Microsoft Tiff Decoder. ImageEffect The ImageEffect class is the base class for all imaging effects (blur, grayscale, etc) It's possible for an effect to not have any inputs but an effect should have at least one output. The default implementations of things assume this. If a derived effect is going to play with Output/Outputs be sure that at least one is there. ImageEffectBlur Gaussian blur effect. It is a single input, single output effect. Warning: If the effect is being scaled (i.e. Input.ScaleX or Input.Scale Y isn't 1) and Expand is true, then it's possible for the output dimensions to be larger or smaller that PixelWidth and PixelHeight. Adjust the pixel buffer fed to copy to avoid problems. ImageEffectFlipRotate This effect can flip an image in X or Y and rotate by multiples of 90 deg ImageEffectGammaCorrect This effect changes the gamma of an image ImageEffectGlow Performs a glow effect. It is a single input, single output effect. ImageEffectGrayscale Converts an image to grayscale. It is a single input, single output effect. ImageEffectNegate Negates an image. It is a single input, single output effect. ImageEffectSharpen Unsharp mask. It is a single input, single output effect. ImageEffectSource ImageEffectSource class implementation ImageEffectSourceCollection The collection of image effect outputs ImageEffectTint Tint constructor. It is a single input, single output effect. ImageEncoder ImageEncoder collects a set of frames (ImageSource's) with their associated thumbnails and metadata and saves them to a specified stream. In addition to frame- specific thumbnails and metadata, there can also be an image-wide (global) thumbnail and metadata, if the codec supports it. ImageEncoderBmp Built-in Encoder for Bmp files. ImageEncoderGif Built-in Encoder for Gif files. ImageEncoderInternal ImageEncoderInternal collects a set of frames (ImageSource's) with their associated thumbnails and metadata and saves them to a specified stream. In addition to frame- specific thumbnails and metadata, there can also be an image-wide (global) thumbnail and metadata, if the codec supports it. ImageEncoderJpeg Built-in Encoder for Jpeg files. ImageEncoderPng Built-in Encoder for Png files. ImageEncoderTiff Built-in Encoder for Tiff files. ImageExchangeMetaData ImageExchangeMetaData This class is used to access and set metadata for ImageFiles which have Exif style metadata. MetaData is stored as Key/Value pairs, where Keys are not necessarily unique. This class provides generic access to all meta data within an image, as well as exposes CLR properties for certain well-known properties. ImageExchangeProperty ImageExchangeProperty - a tuple of an ImageExchangeID and the object which is the value of that property ImageMetaData ImageMetaData This class is used to access and set metadata for Images. This class also exposes a CodecMetaData property which exposes a codec-specific means of accessing the metadata for this image. ImagePalette ImagePalette class ImageSizeOptions Sizing options for an image. The resulting image will be scaled based on these options.
ImageSource Defines the methods, properties, and events for the imaging pipeline, including decoders and effects. ImageSourceCollection The collection of codecs (actually ImageSource's) on the system. ImageSourceConverter ImageSourceConverter IntegerCollection IntegerCollectionConverter IntegerCollectionConverter - Converter class for converting instances of other types to and from IntegerCollection instances. LinearGradientBrush Defines a linear gradient used to fill an area. LineGeometry Represents the geometry of a line. LineSegment Represents a line between two points. Unlike LineGeometry objects, LineSegment should be contained within a PathFigure. MatrixTransform Creates an arbitrary affine matrix transformation used to manipulate objects or coordinate systems in a two-dimensional plane. MediaData MediaData. Use to playback Audio/Video content. MediaSystem The MediaSystem class controls the media layer. NineGridBrush Fills an entire area with an image. Portions of the image are stretched to fit within defined margins. PathFigure Represents a sub-section of a geometry, a single connected series of two- dimensional geometric segments. PathFigureCollection PathFigureConverter PathFigureConverter PathGeometry Represents a complex shape that may be composed of arcs, curves, ellipses, lines, and rectangles. PathGeometryConverter PathGeometryConverter PathSegment An abstract class that represents a segment of a PathFigure object. Classes that derive from PathSegment, such as ArcSegment, BezierSegment, and LineSegment, represent specific types of geometric segments. PathSegmentCollection Represents a list of PathSegment objects. PathSegmentConverter PathSegmentConverter Pen Describes how a shape is outlined. PixelFormats PixelFormats - The collection of supported Pixel Formats PointCollection PointCollectionConverter PointCollectionConverter - Converter class for converting instances of other types to and from PointCollection instances. PointHitTestParameters This is the class for specifying parameters hit testing with a point. PointHitTestResult This class returns the point and visual hit during a hit test pass. PolyBezierSegment PolyBezierSegment PolyLineSegment PolyLineSegment PolyQuadraticBezierSegment PolyQuadraticBezierSegment PrintContext PrintContext holds state and context for a printer interation QuadraticBezierSegment QuadraticBezierSegment RadialGradientBrush Defines a radial gradient used to fill an object. A focal point defines the beginning of the gradient, and a circle defines the end point of the gradient. RectangleGeometry Represents the geometry of a rectangle. RetainedVisual RetainedVisual RotateTransform Used to rotate an object about a specified point in the two-dimensional x-y plane. ScaleTransform Scales an object in the two-dimensional x-y plane, starting from a defined center point. Scale factors are defined in x- and y-directions from this center point. SkewTransform Represents a two-dimensional skew. SolidColorBrush Represents a solid, uniform fill. StartSegment StartSegment SubLineCollection collection of subline. Subline can be object of one of these types GlyphRun LineOver Inline object TileBrush Abstract class that describes a way to fill a region with one or more "tiles." Derived classes define the different types of tiles that can be used; for example, the ImageBrush enables you to fill an area with an image. Transform An abstract class that you use as the parent class of all types of transformations in a two-dimensional plane, including rotation (RotateTransform), scale (ScaleTransform), skew (SkewTransform), and translation (TranslateTransform). This class hierarchy differs from the Matrix structure both because it is a class and because it supports animation and enumeration semantics. TransformCollection Used to create and manipulate a list of Transform objects. TransformConverter Used to convert a Transform object to or from another object type. TranslateTransform Translates an object in the two- dimensional x-y plane. Typeface A Typeface is a combination of family, weight, style and stretch: Vector-Collection VectorCollectionConverter VectorCollectionConverter - Converter class for converting instances of other types to and from VectorCollection instances. VideoData Enables playing of video files according to the state of a time node. VideoDataConverter VideoDataConverter Visual Base class for all Visual types. It provides services and properties common to all Visuals, including hit-testing, coordinate transformation, and bounding box calculations. VisualCollection An ordered collection of Visual objects. VisualManager Renders a tree of Visual objects to a rendering target, typically a window.
[0326]
6
Interfaces IHyphenate IHyphenate is the interface for Hyphenation Service Provider IRetainedRender If this interface is implemented on a class that is derived from a RetainedVisual, the RetainedVisual operations in validation mode, i.e. the graphics subsystem will call OnRender in a lazy fashion, (e.g. if the Visual appears for the first time on the screen). Note that OnRender can be called by the system anytime. IVisual This interface defines the common methods and services available from a Visual object.
[0327]
7
Enumerations BrushMappingMode BrushMappingMode - Enum which describes whether certain values should be considered as absolute local coordinates or whether they should be considered multiples of a bounding box's size. ChannelDescription Describes order of each channel of pixel data ColorInterpolationMode ColorInterpolationMode - This determines how the colors in a gradient are interpolated. CombineMode Specifies the method used to combine two geometric areas. FillRule GradientSpreadMethod Specifies how the gradient should be drawn outside of the specified gradient vector or space. HitTestFilterBehavior Behavior for filtering visuals while hit testing HitTestResultBehavior Enum controls behavior when a positive hit occurs during hit testing. HorizontalAlignment The HorizontalAlignment enum is used to describe how content is positioned horizontally within a container. HyphenationRule Supported Hyphenation Rules. ImagePaletteType Pre-defined palette types MediaState Holds the current state of the Media PenDashCap PenDashCap - Enum which descibes the drawing of the ends of a dash within a dashed line. PenLineCap Describes the shape at the end of a line or segment. PenLineJoin PenLineJoin - Enum which descibes the drawing of the corners on the line. Rotation The rotation to be applied; only multiples of 90 degrees is supported. StandardColorSpace Stretch Stretch - Enum which descibes how a source rect should be stretched to fit a destination rect. StyleSimulations Font style simulation TiffCompressOptions Compress options for saving TIFF image TileMode TileMode - Enum which descibes the drawing of the ends of a line. VerticalAlignment The VerticalAlignment enum is used to describe how content is positioned vertically within a container.
[0328]
8
Structures CharacterIndexer This class is a helper to implement named indexers for characters. Color Represents colors in terms of alpha, red, green, and blue channels. GlyphIndexer This class is a helper to implement named indexers for glyph metrics. ImageExchangeID ImageExchangeID - This class is the type which can be used as the key for a property in an ImageMetaData instance. This can be either an integer or a string. ImageExchangeMetaDataEnumerator ImageExchangeMetaDataEnumerator The enumerator for ImageExchangeMetaData. Contains IEnumerator interface as well as strongly typed versions of the APIs ImageFrameEnumerator The enumerator for Image frames. ImageMetaDataRational An ImageMetaDataRational class is represented as a signed numerator and a signed denominator. The effective value of a rational is the numerator/demoninator ImageMetaDataUnsignedRational A rational class is repre- sented as an unsigned numerator and an unsigned denominator. The effective value of a rational is the numerator/ demoninator ImagePaletteColor ImagePaletteColor structure IntegerRect A rect composed of integer values. Typically used to specify the source rect (in pixels) of interest from an image. Matrix Represents a 3 .times. 3 matrix used for transformations in two-dimensional space. Because "Avalon" only allows affine transformations, the Matrix structure has six entries instead of nine. NamedStringIndexer This class is a helper to implement named indexers for strings localized in multiple cultures. PixelFormat Pixel Format Definition for images and pixel-based surfaces
[0329]
9
Delegates GetPageEventHandler delegate GetPageEventHandler HitTestFilterDelegate Delegate for hit tester to control whether to test against children of visual. HitTestResultDelegate Delegate for hit tester to control returning of hit information on visual.
[0330] The following tables list example members exposed by the System.Windows.Media.Animation namespace.
10
Classes Animatable Any class that doesn't derive from DependencyObject but which has properties that can be animated should derive from this class. AnimationCollection This abstract class provides base functionality for animation collec- tions, such as ColorAnimationCollec- tion, DoubleAnimationCollection, and SizeAnimationCollection. AnimationEffect Override this class to implement element level animations which can participate in the rendering process to instantiate animations on multiple elements at rendering time. AnimationEffectCollection Holds a collection of AnimationEffects. BoolAnimationCollection Represents a collection of BoolModifier animations. BoolModifier BoolTimedModifier ByteAnimationCollection Represents a collection of BoolModifier animations. ByteModifier ByteTimedModifier CharAnimationCollection Represents a collection of CharModifier animations. CharModifier CharTimedModifier ColorAnimation Animates a color value of a property. ColorAnimationCollection Represents a collection of ColorModifier animations. ColorKeyFrameCollection ColorModifier ColorTimedModifier DecimalAnimationCollection Represents a collection of DecimalModifier animations. DecimalModifier DecimalTimedModifier DoubleAnimation Used to animate properties that accept a Double value. DoubleAnimationCollection Represents a collection of DoubleModifier animations. DoubleKeyFrameCollection DoubleModifier DoubleTimedModifier FloatAnimation Used to animate properties that accept a Single value. FloatAnimationCollection Represents a collection of FloatModifier animations. FloatKeyFrameCollection FloatModifier FloatTimedModifier IntAnimationCollection Represents a collection of IntModifier animations. IntModifier IntTimedModifier LengthAnimation Used to animate properties that accept a Length value. LengthAnimationCollection Represents a collection of LengthModifier animations. LengthKeyFrameCollection LengthModifier LengthTimedModifier LongAnimationCollection Represents a collection of LongModifier animations. LongModifier LongTimedModifier MatrixAnimationCollection Represents a collection of MatrixModifier animations. MatrixModifier MatrixTimedModifier Modifier ObjectAnimationCollection Represents a collection of ObjectModifier animations. ObjectModifier ObjectTimedModifier PathAnimation This animation can be used inside of a MatrixAnimationCollection to move a visual object along a path. PointAnimation Used to animate properties that accept Point values. PointAnimationCollection Represents a collection of PointModifier animations. PointKeyFrameCollection PointModifier PointTimedModifier RectAnimation Used to animate properties that accept a Rect value. RectAnimationCollection Represents a collection of RectModifier animations. RectKeyFrameCollection RectModifier RectTimedModifier ShortAnimationCollection Represents a collection of ShortModifier animations. ShortModifier ShortTimedModifier SizeAnimation Defines an animation based on the Size of an object. By providing Size information, an object can appear to shrink or enlarge over a period of time. SizeAnimationCollection Represents a collection of SizeModifier animations. SizeKeyFrameCollection SizeModifier SizeTimedModifier StringAnimationCollection Represents a collection of StringModifier animations. StringModifier StringTimedModifier Timeline Maintains run-time timing state for timed objects. TimelineBuilder An object that can be used to create Timeline objects. TimeManager The object that controls an entire timing tree. TimeSyncValueTypeConverter An object that performs type conversions involving TimeSyncValue values. TimeTypeConverter An object that performs type conversions involving Time values. VectorAnimation Used to animate properties that accept a Vector value. VectorAnimationCollection Represents a collection of VectorModifier animations. VectorKeyFrameCollection VectorModifier VectorTimedModifier
[0331]
11
Interfaces IClock Represents an object that can provide linear time values. IModifier Defines the basic behavior of a modifier object. A modifier is an object that takes an object, called the base value, of a certain type and returns another object of the same type as its output. ITimingControl Defines the behavior of timelines and timed objects. ITimingControlBuilder Represents an object that can build a timeline template.
[0332]
12
Enumerations AnimationType Describes the behavior of an animation. CloneType The types of clones that CloneCore may request. InterpolationMethod Describes how an animation calculates its output values. KeyTimeType The different types of KeyTimes TimeEndSync Values for the endSync attribute, which specifies how a container calculates its simple duration based on the children's durations. TimeFill Specifies how the timeline behaves after it is no longer active. TimeRestart Values for the Timeline.Restart attribute. TimeSeekOrigin Indicates a timeline position; used to specify the behavior of the ITimingControl interface's Seek method by defining the position to which the offset is applied. TimeSyncBase The event to synchronize a begin or end value to.
[0333]
13
Structures ColorKeyFrame DoubleKeyFrame FloatKeyFrame KeySpline This class is used to pass an array of key splines into the KeySplines