To provide Release 2 enhancements while remaining compatible with the older 1.3 version of the OS, several familiar 1.3 system structures have been extended to include an optional pointer to additional information. The new extended versions of such structures are generally defined in the same include file as the original structure. These extended structures are passed to the same 1.3 system functions as the unextended structure (e.g., OpenWindow(), OpenScreen(), AddGadget(), OpenDiskFont()). The existence of the extended information is signified by setting a new flag bit in the structure. (In one case, PROPNEWLOOK, only the flag bit itself is significant). These extensions are transparent to previous versions of the operating system. Only the Release 2 operating system will recognize the bit and act on the extended information. The table below lists the flag bit for each structure to specify that extended information is present. Original Extended Flag Field Flag Bit Defined In -------- -------- ---------- -------- ---------- NewScreen ExtNewScreen Type NS_EXTENDED <intuition/screens.h> NewWindow ExtNewWindow Flags WFLG_NW_EXTENDED <intuition/intuition.h> Gadget Gadget Flags GFLG_STRINGEXTEND <intuition/intuition.h> PropInfo PropInfo Flags PROPNEWLOOK <intuition/intuition.h TextAttr TTextAttr tta_Style FSF_TAGGED <graphics/text.h> Through the use of such extensions, applications can request special Release 2 features in a 1.3-compatible manner. When the application is run on a Release 2 machine, the enhanced capabilities will be active. The enhancements available through these extensions include: Screen: Overscan, 3D Look (SA_Pens), public screens, PAL/NTSC, new modes Window: Autoadjust sizing, inner dimensions, menu help Gadget: Control of font, pens, and editing of string gadgets PropInfo: Get 3D Look proportional gadgets when running under Release 2 TTextAttr: Control width of scaled fonts Extensible longword arrays called TagItem lists are used to specify the extended information for many of these structures. Tag lists provide an open-ended and backwards-compatible method of growing system structures by storing all new specifications in an extendible array of longwords pairs. Another transparent Release 2 extension is the diskfont library's ability to scale bitmap and outline fonts to arbitrary sizes and the availability of scalable outline fonts. Make sure that these new scalable fonts are available to your application by not setting the FPF_DESIGNED flag for AvailFonts() or OpenDiskFont(). Allow the user to create new font sizes by providing a way for her to manually enter the desired font size (the 1.3 OS returns the closest size, Release 2 returns the requested size). See the Intuition and graphics library chapters, and the include file comments for additional information. See the "Utility Library" chapter for more information on TagItems and tag lists.
[Back to Amiga Developer Docs]