|
|
Tech Note 13: Using the ScreenLib Shared LibraryOct 21, 2003Copyright 2003 NS BASIC Corporation |
(Special thanks to Ron Glowka) s
The ScreenLib Shared Library adds functions to NS Basic/Palm to enhance control of the screen. It allows you to change the bit depth and color attributes. There are also drawing functions and a screen lock function. A sample program demonstrating the use of the functions called ScreenLibTest is also included.
By providing access to the the PalmOS WinScreenMode API function, ScreenLib provides methods for determining a PalmOS device's bit depth and color capabilities and for setting the "screen mode" to take advantage of these capabilities. It eliminates the need for using third-party applications to perform these functions prior to running your NSBasic program.
A copy of the PalmOS documentation for the WinScreenMode API function is provided at the end of this document. This documentation should be reviewed to gain a more full understanding of this function.
Color support in the Palm OS may work differently than you are used to. Each of the UI elements on the screen has its own color setting. However, the settings apply equally to all objects on the screen.
More information on using color capabilities can be found in the "Tech Note 04: Using Color Objects and Graphics" contributed by Adrian Nicolaiev. This Tech Note can be found at:
http://nsbasic.com/palm/info/technotes/TN04.htm
All of the PalmOS "SysTraps" mentioned in Tech Note 4, plus a few others, are now supported in this library. While most of these functions can be called using the built-in SysTrapSub and SysTrapFunc statements, they have been included here to make them easier to call and are somewhat more "self documenting".
In order to use the ScreenLib Shared Library, the library must be loaded using the NSBasic LoadLibrary statement. This statement should be located in the program's Startup code so that the functions will be available throughout the program. The LoadLibrary statement has an optional second parameter to allow you to specify an abbreviated reference name for the library's functions. The examples in this document use "SL" for this reference name. Example:
Program's Startup code: Sub main() LoadLibrary "ScreenLib", "SL" End Sub
Also, in order to use the ScreenLib Shared Library, the ScreenLib.INF file must be present in your "nsbasic\lib" directory and the ScreenLib.prc file must be downloaded to your device.
Except for the function that returns a version number, all the parameter and return data types are either "Integer"or "String". Version numbers are returned as a "Double".
Version
-------
Version = ScreenLib.Version()
Description:
Returns the version number of the ScreenLib Shared Library.
Parameters: None
Returns: Version as Double
Example:
Dim Version as Double
Version = SL.Version()
CompileInfo
-----------
ScreenLib.CompileInfo CompileDate, CompileTime
Description:
Returns the date and time that the ScreenLib Shared Library
was compiled.
Parameters: CompileDate as String
CompileTime as String
Returns: None
Example:
Dim CompileDate as String
Dim CompileTime as String
CompileDate = "mon dd yyyy" '11 characters
CompileTime = "hh:mm:ss" '8 characters
SL.CompileInfo CompileDate, CompileTime
Comments:
The CompileDate and CompileTime string variables must be
initialized prior to calling CompileInfo.
GetSupportedDepths
------------------
Depths = ScreenLib.GetSupportedDepths()
Description:
Returns a bitmapped integer with each bit indicating a
bitmap depth supported by the PalmOS device.
Parameters: None
Returns: Depths as Integer
Example:
Dim Depths as Integer
Depths = SL.GetSupportedDepths()
Comments:
The NS Basic Shared Library "BitsNBytes" probably provides
the best suited functions for evaluating the returned value
from this function.
DepthSupported
--------------
Boolean = ScreenLib.DepthSupported(Depth)
Description:
Returns 1 if the specified depth is supported by the
PalmOS device. Otherwise, it returns 0.
Parameters: Depth as Integer
Returns: Boolean as Integer
Example:
Dim Boolean as Integer
Dim Depth as Integer
Depth = 4
Boolean = SL.DepthSupported(Depth)
ColorSupported
--------------
Boolean = ScreenLib.ColorSupported()
Description:
Returns 1 if the PalmOS device has color capabilities.
Otherwise, it returns 0.
Parameters: None
Returns: Boolean as Integer
Example:
Dim Boolean as Integer
Boolean = SL.ColorSupported()
SetDepth
--------
ScreenLib.SetDepth Depth
Description:
Sets the screen mode to support the specified bitmap
bit depth.
Parameters: Depth as Integer
Returns: None
Example:
Dim Depth as Integer
Depth = 4
SL.SetDepth Depth
SetColor
--------
ScreenLib.SetColor Boolean
Description:
Sets the screen mode to support color bitmaps.
Parameters: Boolean as Integer
(1 = support color)
(0 = do not support color)
Example:
Dim Boolean as Integer
Boolean = 1
SL.SetColor Boolean
SetWidth
--------
ScreenLib.SetWidth Width
Description:
Sets the current screen width.
Parameters: Width as Integer
Returns: None
Example:
Dim Width as Integer
Width = 160
SL.SetWidth Width
Comments:
This function does not appear to work correctly with NS Basic
programs.
SetHeight
---------
ScreenLib.SetHeight Height
Description:
Sets the current screen height.
Parameters: Height as Integer
Returns: None
Example:
Dim Height as Integer
Height = 160
SL.SetHeight Height
Comments:
This function does not appear to work correctly with NS Basic
programs.
SaveScreenMode
--------------
ScreenLib.SaveScreenMode()
Description:
Saves the current screen mode parameters. These parameters
can later be restored by calling "RestoreScreenMode". It is
suggested that the current screen mode parameters be saved before
any changes are requested and that these saved parameters
are restored when the program exits.
Parameters: None
Returns: None
Example:
SL.SaveScreenMode()
RestoreScreenMode
-----------------
ScreenLib.RestoreScreenMode()
Description:
Restores saved screen mode parameters. These parameters
must have been saved by calling "SaveScreenMode". It is
suggested that the current screen mode parameters be saved before
any changes are requested and that these saved parameters
are restored when the program exits.
Parameters: None
Returns: None
Example:
SL.RestoreScreenMode()
CurrentDepth
------------
Depth = ScreenLib.CurrentDepth()
Description:
Returns the current bitmap depth.
Parameters: None
Returns: Depth as Integer
Example:
Dim Depth as Integer
Depth = SL.CurrentDepth()
CurrentColor
------------
Boolean = ScreenLib.CurrentColor()
Description:
Returns 1 if the PalmOS Device's screen mode is currently
set to support color. Otherwise, it returns 0.
Parameters: None
Returns: Boolean as Integer
Example:
Dim Boolean as Integer
Boolean = SL.CurrentColor()
CurrentWidth
------------
Width = ScreenLib.CurrentWidth()
Description:
Returns the current screen width.
Parameters: None
Returns: Width as Integer
Example:
Dim Width as Integer
Width = SL.CurrentWidth()
CurrentHeight
-------------
Height = ScreenLib.CurrentHeight()
Description:
Returns the current screen height.
Parameters: None
Returns: Height as Integer
Example:
Dim Height as Integer
Height = SL.CurrentHeight()
SetToDefaults
-------------
ScreenLib.SetToDefaults()
Description:
Sets all screen mode parameters to their default values.
Parameters: None
Returns: None
Example:
SL.SetToDefaults()
DefaultDepth
------------
Depth = ScreenLib.DefaultDepth()
Description:
Returns the default bitmap depth.
Parameters: None
Returns: Depth as Integer
Example:
Dim Depth as Integer
Depth = SL.DefaultDepth()
DefaultColor
------------
Boolean = ScreenLib.DefaultColor()
Description:
Returns 1 if the PalmOS Device's screen mode default is
set to support color. Otherwise, it returns 0.
Parameters: None
Returns: Boolean as Integer
Example:
Dim Boolean as Integer
Boolean = SL.DefaultColor()
DefaultWidth
------------
Width = ScreenLib.DefaultWidth()
Description:
Returns the default screen width.
Parameters: None
Returns: Width as Integer
Example:
Dim Width as Integer
Width = SL.DefaultWidth()
DefaultHeight
-------------
Height = ScreenLib.DefaultHeight()
Description:
Returns the default screen height.
Parameters: None
Returns: Height as Integer
Example:
Dim Height as Integer
Height = SL.DefaultHeight()
GetTableEntryIndex
------------------
Index = ScreenLib.GetTableEntryIndex(Which)
Description:
This function calls the PalmOS UIColorGetTableEntryIndex
function. It returns the index value for a UI color for the
current system palette.
Parameters: Which as Integer
UIObjectFrame = 0,
UIObjectFill = 1
UIObjectForeground = 2
UIObjectSelectedFill = 3
UIObjectSelectedForeground = 4
UIMenuFrame = 5
UIMenuFill = 6
UIMenuForeground = 7
UIMenuSelectedFill = 8
UIMenuSelectedForeground = 9
UIFieldBackground = 10
UIFieldText = 11
UIFieldTextLines = 12
UIFieldCaret = 13
UIFieldTextHighlightBackground = 14
UIFieldTextHighlightForeground = 15
UIFieldFepRawText = 16
UIFieldFepRawBackground = 17
UIFieldFepConvertedText = 18
UIFieldFepConvertedBackground = 19
UIFieldFepUnderline = 20
UIFormFrame = 21
UIFormFill = 22
UIDialogFrame = 23
UIDialogFill = 24
UIAlertFrame = 25
UIAlertFill = 26
UIOK = 27
UICaution = 28
UIWarning = 29
Returns: Index as Integer
Example:
Dim Which as Integer
Dim Index as Integer
Which = 11 'UIFieldText
Index = SL.GetTableEntryIndex(Which)
GetTableEntryRGB
----------------
Index = ScreenLib.GetTableEntryRGB(Which)
Description:
This function calls the PalmOS UIColorGetTableEntryRGB function.
It retrieves the RGB values for the UI Color. RGB Values are
returned in a structure called "RGBColorType". It contains the
following fields:
index, red, green, blue.
This function retrieves all these values, but only returns
the index. To get the red, green, and blue values, call this
function first and then call GetRGBRed, GetRGBGreen, and
GetRGBBlue. See the example for more information.
Parameters: Which as Integer
(see the GetTableEntryIndex function for
a list of valid "Which" values")
Returns: Index as Integer
Example:
Dim Which as Integer
Dim Index as Integer
Dim Red as Integer
Dim Green as Integer
Dim Blue as Integer
Which = 11 'UIFieldText
Index = SL.GetTableEntryRGB(Which)
Red = SL.GetRGBRed()
Green = SL.GetRGBGreen()
Blue = SL.GetRGBBlue()
GetRGBIndex
-----------
Index = ScreenLib.GetRGBIndex()
Description:
RGB Values are returned in a structure called "RGBColorType".
It contains the following fields:
index, red, green, blue.
This function returns the index value that was previously
retrieved by either the GetTableEntryRGB or IndexToRGB functions.
Parameters: None
Returns: Index as Integer
Example:
Dim Index as Integer
Index = SL.GetRGBIndex()
GetRGBRed
---------
Red = ScreenLib.GetRGBRed()
Description:
RGB Values are returned in a structure called "RGBColorType".
It contains the following fields:
index, red, green, blue.
This function returns the red value that was previously
retrieved by either the GetTableEntryRGB or IndexToRGB functions.
Parameters: None
Returns: Red as Integer
Example:
See the example provided with either the GetTableEntryRGB or
IndexToRGB functions.
GetRGBGreen
-----------
Green = ScreenLib.GetRGBGreen()
Description:
RGB Values are returned in a structure called "RGBColorType".
It contains the following fields:
index, red, green, blue.
This function returns the green value that was previously
retrieved by either the GetTableEntryRGB or IndexToRGB functions.
Parameters: None
Returns: Green as Integer
Example:
See the example provided with either the GetTableEntryRGB or
IndexToRGB functions.
GetRGBBlue
----------
Blue = ScreenLib.GetRGBBlue()
Description:
RGB Values are returned in a structure called "RGBColorType".
It contains the following fields:
index, red, green, blue.
This function returns the blue value that was previously
retrieved by either the GetTableEntryRGB or IndexToRGB functions.
Parameters: None
Returns: Blue as Integer
Example:
See the example provided with either the GetTableEntryRGB or
IndexToRGB functions.
SetTableEntryIndex
------------------
ScreenLib.SetTableEntryIndex Which, Index
Description:
This subroutine calls the PalmOS IndexToRGB function and then
it calls UIColorSetTableEntry. It changes a value in the UI
Color list.
Parameters: Which as Integer
(see the GetTableEntryIndex function for
a list of valid "Which" values")
Index as Integer (valid values: 0 to 255)
Returns: None
Example:
Dim Which as Integer
Dim Index as Integer
Which = 11 'UIFieldText
Index = 42
SL.SetTableEntryIndex Which, Index
Note:
Some changes aren't reflected until the object or form is
redrawn with the "Redraw" statement. Even then, some changes
like the form background (UIFormFill - 22) aren't reflected
until until you change forms with a "NextScreen" statement.
You might want to set some table entries in either the
programs "Startup" code or just before you use the "NextScreen"
statement.
SetTableEntryRGB
----------------
ScreenLib.SetTableEntryRGB Which, Red, Green, Blue
Description:
This subroutine calls the PalmOS UIColorSetTableEntry function.
It changes a value in the UI Color list.
Parameters: Which as Integer
(see the GetTableEntryIndex function for
a list of valid "Which" values")
Red as Integer (valid values: 0 to 255)
Green as Integer (valid values: 0 to 255)
Blue as Integer (valid values: 0 to 255)
Returns: None
Example:
Dim Which as Integer
Dim Red as Integer
Dim Green as Integer
Dim Blue as Integer
Which = 11 'UIFieldText
Red = 255
Green = 0
Blue = 0
SL.SetTableEntryRGB Which, Red, Green, Blue
Note:
Some changes aren't reflected until the object or form is
redrawn with the "Redraw" statement. Even then, some changes
like the form background (UIFormFill - 22) aren't reflected
until until you change forms with a "NextScreen" statement.
You might want to set some table entries in either the
programs "Startup" code or just before you use the "NextScreen"
statement.
BrightnessAdjust
----------------
ScreenLib.BrightnessAdjust()
Description:
This subroutine calls the PalmOS UIBrightnessAdjust function.
It displays the "Brightness Adjust" dialog.
Parameters: None
Returns: None
Example:
SL.BrightnessAdjust()
ContrastAdjust
--------------
ScreenLib.ContrastAdjust()
Description:
This subroutine calls the PalmOS UIContrastAdjust function.
It displays the "Contrast Adjust" dialog.
Parameters: None
Returns: None
Example:
SL.ContrastAdjust()
Note:
The PalmOS documentation states that this function only works
on the "Palm V Connected Organizer".
PickColorIndex
--------------
Changed = ScreenLib.PickColorIndex(Index, Title)
Description:
This function calls the PalmOS UIPickColor function. It
displays a Palette dialog to allow a user to select a
color. The selected index and RGB values can be retrieved
by calling the GetRGBIndex, GetRGBRed, GetRGBGreen and
GetRGBBlue functions.
Parameters: Index as Integer - suggested Index
Title as String - Dialog title to display
Returns: Changed as Integer
(0 = User cancelled or chose suggested index)
(1 = User chose a new index)
Example:
Dim Index as Integer
Dim Red as Integer
Dim Green as Integer
Dim Blue as Integer
Dim Changed as Integer
Dim Title as String
Index = 42
Title = "Pick a Color"
Changed = SL.PickColorIndex(Index, Title)
If Changed = 1 Then
Index = SL.GetRGBIndex()
Red = SL.GetRGBRed()
Green = SL.GetRGBGreen()
Blue = SL.GetRGBBlue()
End If
PickColorRGB
--------------
Changed = ScreenLib.PickColorRGB(Red, Green, Blue, Title)
Description:
This function calls the PalmOS UIPickColor function. It
displays an RGB dialog to allow a user to select a
color. The selected index and RGB values can be retrieved
by calling the GetRGBIndex, GetRGBRed, GetRGBGreen and
GetRGBBlue functions.
Parameters: Red as Integer - suggested red value - 0 to 255)
Green as Integer - suggested green value - 0 to 255)
Blue as Integer - suggested blue value - 0 to 255)
Title as String - Dialog title to display
Returns: Changed as Integer
(0 = User cancelled or chose suggested RGB values)
(1 = User chose new RGB values)
Example:
Dim Index as Integer
Dim Red as Integer
Dim Green as Integer
Dim Blue as Integer
Dim Changed as Integer
Dim Title as String
Red = 255
Green = 0
Blue = 0
Title = "Pick a Color"
Changed = SL.PickColorRGB(Red, Green, Blue, Title)
If Changed = 1 Then
Index = SL.GetRGBIndex()
Red = SL.GetRGBRed()
Green = SL.GetRGBGreen()
Blue = SL.GetRGBBlue()
End If
IndexToRGB
----------
ScreenLib.IndexToRGB Index
Description:
This subroutine calls the PalmOS WinIndexToRGB function. It
converts an index in the currently active color table to an
RGB value. RGB Values are returned in a structure called
"RGBColorType". It contains the following fields:
index, red, green, blue.
To get the actual index, red, green, and blue values, call this
function first and then call GetRGBIndex, GetRGBRed, GetRGBGreen,
and GetRGBBlue. See the example for more information.
Parameters: Index as Integer
Returns: None
Example:
Dim Index as Integer
Dim Red as Integer
Dim Green as Integer
Dim Blue as Integer
Index = 134
SL.IndexToRGB Index
Index = SL.GetRGBIndex()
Red = SL.GetRGBRed()
Green = SL.GetRGBGreen()
Blue = SL.GetRGBBlue()
RGBToIndex
----------
Index = ScreenLib.RGBToIndex(Red, Green, Blue)
Description:
This function calls the PalmOS WinRGBToIndex function. It
converts RGB values to the index of the closest color in the
currently active color lookup table (CLUT).
Parameters: Red as Integer (valid values: 0 to 255)
Green as Integer (valid values: 0 to 255)
Blue as Integer (valid values: 0 to 255)
Returns: Index as Integer
Example:
Dim Index as Integer
Dim Red as Integer
Dim Green as Integer
Dim Blue as Integer
Red = 255
Green = 0
Blue = 0
Index = SL.RGBToIndex(Red, Green, Blue)
SetForeColor
------------
OldIndex = ScreenLib.SetForeColor(NewIndex)
Description:
This function calls the PalmOS WinSetForeColor function. It
sets the foreground color to use in subsequent draw operations.
Parameter: NewIndex as Integer
Returns: OldIndex as Integer - previous foreground index
Example:
Dim OldIndex as Integer
Dim NewIndex as Integer
NewIndex = 134
OldIndex = SL.SetForeColor(NewIndex)
Note:
Colors set with this function appear to be reset to default
values when switching between forms or when a form is redrawn.
It is probably best to call this function in the form's
"After" code section.
SetBackColor
------------
OldIndex = ScreenLib.SetBackColor(NewIndex)
Description:
This function calls the PalmOS WinSetBackColor function. It
sets the background color to use in subsequent draw operations.
Parameter: NewIndex as Integer
Returns: OldIndex as Integer - previous background index
Example:
Dim OldIndex as Integer
Dim NewIndex as Integer
NewIndex = 134
OldIndex = SL.SetBackColor(NewIndex)
Note:
Colors set with this function appear to be reset to default
values when switching between forms or when a form is redrawn.
It is probably best to call this function in the form's
"After" code section.
SetTextColor
------------
OldIndex = ScreenLib.SetTextColor(NewIndex)
Description:
This function calls the PalmOS WinSetTextColor function. It
sets the color to use for drawing characters in subsequent draw
operations.
Parameter: NewIndex as Integer
Returns: OldIndex as Integer - previous text index
Example:
Dim OldIndex as Integer
Dim NewIndex as Integer
NewIndex = 134
OldIndex = SL.SetTextColor(NewIndex)
Note:
Colors set with this function appear to be reset to default
values when switching between forms or when a form is redrawn.
It is probably best to call this function in the form's
"After" code section.
DrawLine
--------
ScreenLib.DrawLine X1, Y1, X2, Y2
Description:
This soubroutine calls the PalmOS WinDrawLine function. It
draws a line in the draw window using the current foreground
color.
Note: This function was provided for completeness only. The
built-in DrawLine NSBasic statement produces the same result.
Parameters: X1 as Integer
Y1 as Integer
X2 as Integer
Y2 as Integer
Returns: None
Example:
Dim X1 as Integer
Dim Y1 as Integer
Dim X2 as Integer
Dim Y2 as Integer
X1 = 10
Y1 = 20
X2 = 120
Y2 = 20
SL.DrawLine X1, Y1, X2, Y2
DrawGrayLine
------------
ScreenLib.DrawGrayLine X1, Y1, X2, Y2
Description:
This subroutine calls the PalmOS WinDrawGrayLine function. It
does not draw in a gray color, but rather draws with
alternating foreground and background colors.
Parameters: X1 as Integer
Y1 as Integer
X2 as Integer
Y2 as Integer
Returns: None
Example:
Dim X1 as Integer
Dim Y1 as Integer
Dim X2 as Integer
Dim Y2 as Integer
X1 = 10
Y1 = 20
X2 = 120
Y2 = 20
SL.DrawGrayLine X1, Y1, X2, Y2
EraseLine
---------
ScreenLib.EraseLine X1, Y1, X2, Y2
Description:
This subroutine calls the PalmOS WinEraseLine function. It
draws a line in the draw window using the current background
color.
Parameters: X1 as Integer
Y1 as Integer
X2 as Integer
Y2 as Integer
Returns: None
Example:
Dim X1 as Integer
Dim Y1 as Integer
Dim X2 as Integer
Dim Y2 as Integer
X1 = 10
Y1 = 20
X2 = 120
Y2 = 20
SL.EraseLine X1, Y1, X2, Y2
InvertLine
----------
ScreenLib.InvertLine X1, Y1, X2, Y2
Description:
This subroutine calls the PalmOS WinInvertLine function. It
draws an inverted line in the draw window.
Parameters: X1 as Integer
Y1 as Integer
X2 as Integer
Y2 as Integer
Returns: None
Example:
Dim X1 as Integer
Dim Y1 as Integer
Dim X2 as Integer
Dim Y2 as Integer
X1 = 10
Y1 = 20
X2 = 120
Y2 = 20
SL.InvertLine X1, Y1, X2, Y2
DrawPixel
---------
ScreenLib.DrawPixel X, Y
Description:
This subroutine calls the PalmOS WinDrawPixel function. It
draws a pixel in the draw window using the current foreground
color.
Parameters: X as Integer
Y as Integer
Returns: None
Example:
Dim X as Integer
Dim Y as Integer
X = 10
Y = 20
SL.DrawPixel X, Y
ErasePixel
----------
ScreenLib.ErasePixel X, Y
Description:
This subroutine calls the PalmOS WinErasePixel function. It
draws a pixel in the draw window using the current background
color.
Parameters: X as Integer
Y as Integer
Returns: None
Example:
Dim X as Integer
Dim Y as Integer
X = 10
Y = 20
SL.ErasePixel X, Y
InvertPixel
-----------
ScreenLib.InvertPixel X, Y
Description:
This subroutine calls the PalmOS WinInvertPixel function. It
draws an inverted pixel in the draw window.
Parameters: X as Integer
Y as Integer
Returns: None
Example:
Dim X as Integer
Dim Y as Integer
X = 10
Y = 20
SL.InvertPixel X, Y
GetPixel
--------
Index = ScreenLib.GetPixel(X, Y)
Description:
This function calls the PalmOS WinGetPixel function. It
returns the color of the specified a pixel in the draw window.
Parameters: X as Integer
Y as Integer
Returns: Index as Integer
Example:
Dim Index as Integer
Dim X as Integer
Dim Y as Integer
X = 10
Y = 20
Index = SL.GetPixel(X, Y)
ScreenLock
----------
Success = ScreenLib.ScreenLock(Mode)
Description:
This function calls the PalmOS WinScreenLock function. It
"locks" the current screen by switching the UI concept of the
screen base address to an area that is not reflected on the
display. This routine can be used to "freeze" the display
while doing lengthy drawing operations to avoid a flickering
effect. Call ScreenUnlock to unlock the display and cause
it to be updated with any changes. The screen must be unlocked
as many times as it is locked to actually update the display.
Parameters: Mode as Integer
(winLockCopy = 0 - copy old screen to new)
(winLockErase = 1 - erase new screen to white)
(winLockDontCare = 2 - don't do anything)
Returns: Success as Integer
(1 = Success)
(0 = Failure)
Example:
Dim Success as Integer
Dim Mode as Integer
Mode = 0 'winLockCopy
Success = SL.ScreenLock(Mode)
ScreenUnlock
------------
ScreenLib.ScreenUnlock()
Description:
This subroutine calls the PalmOS WinScreenUnlock function. Call
ScreenUnlock to unlock the display and cause it to be updated
with any changes. The screen, which was locked by calling
ScreenLock, must be unlocked as many times as it is locked to
actually update the display.
Parameters: None
Returns: None
Example:
SL.ScreenUnlock()
Purpose:
Sets or returns display parameters, including display geometry,
bit depth, and color support.
Prototype:
Err WinScreenMode (WinScreenModeOperation operation,
UInt32 *widthP, UInt32 *heightP,
UInt32 *depthP, Boolean *enableColorP)
Parameters:
The widthP, heightP, depthP, and enableColorP parameters are used in
different ways for different operations. See Comments at the end of
this description for details.
-> operation
The work this function is to perform, as specified by
one of the following selectors:
winScreenModeGet
Return the current settings for the display.
winScreenModeGetDefaults
Return the default settings for the display.
winScreenModeGetSupportedDepths
Return in depthP a hexadecimal value indicating
the supported screen depths. The binary
representation of this value defines a bitfield
in which the value 1 indicates support for a
particular display depth. The position
representing a particular bit depth corresponds
to the value 2(bitDepth-1). See the Example at
the end of this function description for more
information.
winScreenModeGetSupportsColor
Return true as the value of the enableColorP
parameter when color mode can be enabled.
winScreenModeSet
Change display settings to the values specified
by the other arguments to the WinScreenMode
function.
winScreenModeSetToDefaults
Change display settings to default values.
<-> widthP
Pointer to new/old screen width.
<-> heightP
Pointer to new/old screen height.
<-> depthP
Pointer to new/old/available screen depth.
<-> enableColorP
Pass true to enable color drawing mode.
Result:
If no error, returns values as specified by the operation
argument. Various invalid arguments may cause this function
to return a sysErrParamErr result code. In rare cases, a failed
allocation can cause this function to return a
memErrNotEnoughSpace error.
Comments:
The widthP, heightP, depthP, and enableColorP parameters are used in
different ways for different operations. All "get" operations overwrite
these values with a result when the function returns. The
winScreenModeSet operation changes current display parameters when
passed valid argument values that are not NULL pointers. The
winScreenModeSetToDefaults operation ignores values passed for all of
these parameters.
Table 48.1 summarizes parameter usage for each operation this function
performs.
Table 48.1 Use of parameters to WinScreenMode function
Operation winScreenMode... widthP heightP depthP enableColorP
...Get returned returned returned returned
...GetDefaults returned returned returned returned
...GetSupportedDepths pass in pass in returned pass in
...GetSupportsColor pass in pass in pass in returned
...Set pass in pass in pass in pass in
...SetToDefaults ignored ignored ignored ignored
This function ignores NULL pointer arguments to the widthP, heightP,
depthP, and enableColorP parameters; thus, you can pass a NULL pointer
for any of these values to leave the current value unchanged. Similarly,
when getting values, this function does not return a value for any NULL
pointer argument.
If you change the display depth, it is recommended that you restore it
to its previous state when your application closes, even though the
system sets display parameters back to their default values when
launching an application.
Note that none of the other operations interprets the depth parameter
the same way that winScreenModeGetSupportedDepths does. For example, to
set the display depth to 8-bit mode, you use 8 (decimal) for the display
depth, not 0x08 (128 decimal).
Compatibility:
Implemented only if 3.5 New Feature Set is present. In OS versions prior
to 3.5, this function is called ScrDisplayMode. The prototype for
ScrDisplayMode is similar to WinScreenMode:
Err ScrDisplayMode ( ScrDisplayModeOperation operation,
DWordPtr widthP, DWordPtr heightP,
DWordPtr depthP, BooleanPtr enableColorP)
The only other difference between ScrDisplayMode and WinScreenMode is
that the ScrDisplayModeOperation constants begin with the prefix
scrDisplayMode rather than winScreenMode.
Example:
Here are some additional examples of return values provided by the
winScreenModeGetSupportedDepths mode of the WinScreenMode function.
This function indicates support for 4-bit drawing by returning a value
of 0x08, or 23, which corresponds to a binary value of 1000. Support for
bit depths of 2 and 1 is indicated by a return value of 0x03. Support for
bit depths of 4, 2, and 1 is indicated by 0x0B, which is a binary value
of 1011. Support for bit depths of 24, 8, 4 and 2 is indicated by
0x80008A. The figure immediately following depicts this final example
graphically.
24-bit drawing
| 8-bit drawing
| | 4-bit drawing
| | | 2-bit drawing
| | | |
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0
| | | |
2^23 2^7 2^3 2^1
Bit depth support indicated by interpreting 0x80008A as
binary value.