Tech Note 13: ScreenLib共有ライブラリを使う

Aug 8, 2001

 

© NSB Corporation. All rights reserved.


[英語版]

(Special thanks to Ron Glowka)

ScreenLib共有ライブラリはNS Basic/Palmにファンクションを追加し、スクリーン制御を向上させます。これを使用すると、bit depth(色深度)および色属性の変更が可能になります。さらにドローイング・ファンクションおよびスクリーンロック・ファンクションもあります。ScreenLibTestと呼ばれる、これらのファンクションの使用をデモンストレートするサンプルプログラムも含まれています。

PalmOS WinScreenMode APIファンクションへのアクセスを提供することにより、ScreenLibはPalmOSデバイスのbit depthとカラーサポートを見極めるメソッド、およびこれらの性能を生かすための"screen mode"設定を行うメソッドを提供します。これによって貴方のプログラムを実行する前に、これらのファンクションを行うためのサードパーティのアプリケーションは必要なくなります。

WinScreenMode APIファンクションのPalmOSドキュメントはこのテクニカルノートの最後にあります。ファンクションの理解を深めるために、このドキュメントをお読み下さい。

Palm OSのカラーサポートは、期待しているものとは違った動きをするかもしれません。スクリーン上の各UIエレメントは、独自のカラー設定を持っています。しかし、これらの設定はスクリーン上の全てのオブジェクトに対し平等に適応されます。

カラーの使用につきましては、Adrian Nicolaievによる「Tech Note 04: カラーオブジェクトグラフィックスを使う」もあわせてご覧になって下さい。

http://www.nsbasic.com/palm/Japanese/technotes/TN04.htm

Tech Note 4で言及されているPalmOS "SysTraps"の全てと他いくつかは、このライブラリでサポートされています。これらのほとんどのファンクションはSysTrapSubとSysTrapFuncステートメントによって呼ぶことができます。

ScreenLib共有ライブラリを使うには、NSBasicのLoadLibraryステートを使ってこのライブラリをロードしなければなりません。このステートメントはプログラムのStartupコードで呼ばれるべきでしょう。それによってプログラムを通してライブラリのファンクションが有効になります。LoadLibraryはライブラリのファンクション用に短縮名を指定する、オプションのパラメータ(2番目)を持っています。ここでのサンプルプログラムは、この参照名に"SL"を使用しています。例:

    プログラムのStartupコード:

	Sub main()
	    LoadLibrary "ScreenLib", "SL"
	End Sub

さらにScreenLib共有ライブラリを使用するには、ScreenLib.INFファイルが貴方の"nsbasic\lib"ディレクトリに入っていることと、ScreenLib.prcファイルがお使いのデバイスにダウンロードされていることが必要です。

バージョン番号を戻すファンクションを除き、全てのパラメータおよび戻り値は"Integer(整数)"または"String(文字列)"です。バージョン番号は"Double"として戻されます。

ScreenLib共有ライブラリ - リファレンス:

Version Version = ScreenLib.Version()
説明: ScreenLib共有ライブラリのバージョン番号を戻す。
パラメータ: 無し
戻り値: Version as Double
例:

Dim Version as Double
Version = SL.Version()

CompileInfo ScreenLib.CompileInfo CompileDate, CompileTime
説明: ScreenLib共有ライブラリのコンパイル日時を戻す。
パラメータ:

CompileDate as String
CompileTime as String

戻り値: 無し
例:

Dim CompileDate as String
Dim CompileTime as String

CompileDate = "mon dd yyyy" '11 characters
CompileTime = "hh:mm:ss" '8 characters

SL.CompileInfo CompileDate, CompileTime

コメント: CompileDateおよびCompileTime文字列変数はこのファンクションを呼ぶ前に初期化しておく必要がある。
GetSupportedDepths Depths = ScreenLib.GetSupportedDepths()
説明: PalmOSデバイスによってサポートされているbitmap depthを表している各ビットのビットマップ整数を戻す。
パラメータ:

無し

戻り値: Depths as Integer
例:

Dim Depths as Integer
Depths = SL.GetSupportedDepths()

コメント: このファンクションの戻り値をみきわめるには、NSBasic共有ライブラリ"BitsNBytes"が提供するファンクションを使うのが妥当でしょう。
DepthSupported Boolean = ScreenLib.DepthSupported(Depth)
説明: 指定するDepth(色深度)がPalmOSデバイスによってサポートされている場合1を戻し、されていない場合は0を戻す。
パラメータ: Depth as Integer
戻り値: Boolean as Integer
例:

Dim Boolean as Integer
Dim Depth as Integer

Depth = 4
Boolean = SL.DepthSupported(Depth)

ColorSupported Boolean = ScreenLib.ColorSupported()
説明: PalmOSデバイスがカラーをサポートしている場合1を戻し、していない場合は0を戻す。
パラメータ: 無し
戻り値: Boolean as Integer
例:

Dim Boolean as Integer
Boolean = SL.ColorSupported()

SetDepth ScreenLib.SetDepth Depth
説明: スクリーンモードを指定するビットマップbit depthにセットする。
パラメータ: Depth as Integer
戻り値: 無し
例:

Dim Depth as Integer

Depth = 4
SL.SetDepth Depth

SetColor ScreenLib.SetColor Boolean
説明: スクリーンモードをカラービットマップをサポートするようにセットする。
パラメータ: Boolean as Integer
(1 = support color)
(0 = do not support color)
戻り値: 無し
例:

Dim Boolean as Integer

Boolean = 1
SL.SetColor Boolean

SetWidth ScreenLib.SetWidth Width
説明: 現在のスクリーンの幅をセットする。
パラメータ: Width as Integer
戻り値: 無し
例:

Dim Width as Integer

Width = 160
SL.SetWidth Width

コメント: このファンクションはNS Basicプログラムでは正しく動作しないようである。
SetHeight ScreenLib.SetHeight Height
説明: 現在のスクリーンの高さをセットする。
パラメータ: Height as Integer
戻り値: 無し
例:

Dim Height as Integer

Height = 160
SL.SetHeight Height

コメント: このファンクションはNS Basicプログラムでは正しく動作しないようである。
SaveScreenMode ScreenLib.SaveScreenMode()
説明: 現在のスクリーンモード・パラメータを保存する。これらのパラメータは"RestoreScreenMode"を呼ぶことによって回復することができる。いかなる変更がリクエストされる前に、現スクリーンモード・パラメータを保存することをお勧めします。そしてプログラムが終了する時、保存されたパラメータを元に戻すとよいでしょう。
パラメータ: 無し
戻り値: 無し
例:

SL.SaveScreenMode()

RestoreScreenMode ScreenLib.RestoreScreenMode()
説明: 保存してあるスクリーンモード・パラメータを回復する。これらのパラメータは"SaveScreenMode"を呼ぶことによって保存されている必要がある。いかなる変更がリクエストされる前に、現スクリーンモード・パラメータを保存することをお勧めします。そしてプログラムが終了する時、保存されたパラメータを元に戻すとよいでしょう。
パラメータ: 無し
戻り値: 無し
例:

SL.RestoreScreenMode()

CurrentDepth Depth = ScreenLib.CurrentDepth()
説明: 現在のビットマップdepthを戻す。
パラメータ: 無し
戻り値: Depth as Integer
例:

Dim Depth as Integer

Depth = SL.CurrentDepth()

CurrentColor Boolean = ScreenLib.CurrentColor()
説明: PalmOSデバイスのスクリーンモードがカラーサポートにセットされている場合1を戻し、そうでない場合0を戻す。
パラメータ: 無し
戻り値: Boolean as Integer
例:

Dim Boolean as Integer

Boolean = SL.CurrentColor()

CurrentWidth Width = ScreenLib.CurrentWidth()
説明: 現在のスクリーンの幅を戻す。
パラメータ: 無し
戻り値: Width as Integer
例:

Dim Width as Integer

Width = SL.CurrentWidth()

CurrentHeight Height = ScreenLib.CurrentHeight()
説明: 現在のスクリーンの高さを戻す。
パラメータ: 無し
戻り値: Height as Integer
例:

Dim Height as Integer

Height = SL.CurrentHeight()

SetToDefaults ScreenLib.SetToDefaults()
説明: 全てのスクリーンモード・パラメータをデフォルト値にセットする。
パラメータ: 無し
戻り値: 無し
例:

SL.SetToDefaults()

DefaultDepth Depth = ScreenLib.DefaultDepth()
説明: ビットマップdepthのデフォルト値を戻す。
パラメータ: 無し
戻り値: Depth as Integer
例:

Dim Depth as Integer

Depth = SL.DefaultDepth()

DefaultColor Boolean = ScreenLib.DefaultColor()
説明: PalmOSデバイスのスクリーンモードのデフォルト値がカラーサポートにセットしてある場合1を戻し、そうでない場合は0を戻す。
パラメータ: 無し
戻り値: Boolean as Integer
例:

Dim Boolean as Integer

Boolean = SL.DefaultColor()

DefaultWidth Width = ScreenLib.DefaultWidth()
説明: スクリーンのデフォルト幅を戻す。
パラメータ: 無し
戻り値: Width as Integer
例:

Dim Width as Integer

Width = SL.DefaultWidth()

DefaultHeight Height = ScreenLib.DefaultHeight()
説明: スクリーンのデフォルト高さを戻す。
パラメータ: 無し
戻り値: Height as Integer
例:

Dim Height as Integer

Height = SL.DefaultHeight()

GetTableEntryIndex Index = ScreenLib.GetTableEntryIndex(Which)
説明: このファンクションはPalmOS UIColorGetTableEntryIndexファンクションを呼び、現在のシステムパレット用のUIカラーのインデックス値を戻す。
パラメータ:

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

戻り値: Index as Integer
例:

Dim Which as Integer
Dim Index as Integer

Which = 11 'UIFieldText
Index = SL.GetTableEntryIndex(Which)

GetTableEntryRGB Index = ScreenLib.GetTableEntryRGB(Which)
説明:

このファンクションはPalmOS UIColorGetTableEntryRGBファンクションを呼び、UIカラーのRGB値を取り出す。RGB値は"RGBColorType"と呼ばれる構造で戻される。これは以下のフィールドを含んでいる:

index, red, green, blue

このファンクションはこれら全ての値を取り出すが、indexだけを戻す。red、green、blueの値を受けるには、このファンクションを呼んだ後にGetRGBRed、GetRGBGreen、GetRGBBlueを呼ぶ。例を参照。

パラメータ: Which as Integer
(see the GetTableEntryIndex function for a list of valid "Which" values")
戻り値: Index as Integer
例:

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()
説明:

"RGBColorType"と呼ばれる構造でRGB値を戻す。 これは以下のフィールドを含んでいる:

index, red, green, blue

このファンクションはGetTableEntryRGBまたはIndexToRGBによって既に取り出したindex値を戻す。

パラメータ: 無し
戻り値: Index as Integer
例:

Dim Index as Integer

Index = SL.GetRGBIndex()

GetRGBRed Red = ScreenLib.GetRGBRed()
説明:

"RGBColorType"と呼ばれる構造でRGB値を戻す。 これは以下のフィールドを含んでいる:

index, red, green, blue

このファンクションはGetTableEntryRGBまたはIndexToRGBによって既に取り出したred値を戻す。

パラメータ: 無し
戻り値: Red as Integer
例:

GetTableEntryRGBまたはIndexToRGBファンクションの例を参照。

GetRGBGreen Green = ScreenLib.GetRGBGreen()
説明:

"RGBColorType"と呼ばれる構造でRGB値を戻す。 これは以下のフィールドを含んでいる:

index, red, green, blue

このファンクションはGetTableEntryRGBまたはIndexToRGBによって既に取り出したgreen値を戻す。

パラメータ: 無し
戻り値: Green as Integer
例:

GetTableEntryRGBまたはIndexToRGBファンクションの例を参照。

GetRGBBlue Blue = ScreenLib.GetRGBBlue()
説明:

"RGBColorType"と呼ばれる構造でRGB値を戻す。 これは以下のフィールドを含んでいる:

index, red, green, blue

このファンクションはGetTableEntryRGBまたはIndexToRGBによって既に取り出したblue値を戻す。

パラメータ: 無し
戻り値: Blue as Integer
例:

GetTableEntryRGBまたはIndexToRGBファンクションの例を参照。

SetTableEntryIndex ScreenLib.SetTableEntryIndex Which, Index
説明:

このサブルーチンはPalmOS IndexToRGBファンクションを呼び、それからUIColorSetTableEntryを呼ぶ。UI Colorリストの値を変更する。

パラメータ: Which as Integer
(see the GetTableEntryIndex function for a list of valid "Which" values")
Index as Integer
(valid values: 0 to 255)
戻り値: 無し
例:

Dim Which as Integer
Dim Index as Integer

Which = 11 'UIFieldText
Index = 42
SL.SetTableEntryIndex Which, Index

コメント:

いくつかの変更は"Redraw"ステートメントを使ってオブジェクトやフォームを再描画するまで反映しない。さらにフォームバックグランド(UIFormFill - 22)の変更は"NextScreen"ステートメントによってフォームを変えないと反映されない。いくつかのテーブル項目は"Startup"コードか"NextScreen"ステートメントの直ぐ前にセットするのがよいでしょう。

SetTableEntryRGB ScreenLib.SetTableEntryRGB Which, Red, Green, Blue
説明:

このサブルーチンはPalmOS UIColorSetTableEntryファンクションを呼び、UI Colorリストの値を変更する。

パラメータ: 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)
戻り値: 無し
例:

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

コメント:

いくつかの変更は"Redraw"ステートメントを使ってオブジェクトやフォームを再描画するまで反映しない。さらにフォームバックグランド(UIFormFill - 22)の変更は"NextScreen"ステートメントによってフォームを変えないと反映されない。いくつかのテーブル項目は"Startup"コードか"NextScreen"ステートメントの直ぐ前にセットするのがよいでしょう。

BrightnessAdjust ScreenLib.BrightnessAdjust()
説明:

このサブルーチンはPalmOS UIBrightnessAdjustファンクションを呼び、"Brightness Adjust"ダイアログを表示する。

パラメータ: 無し
戻り値: 無し
例:

SL.BrightnessAdjust()

ContrastAdjust ScreenLib.ContrastAdjust()
説明:

このサブルーチンはPalmOS UIContrastAdjustファンクションを呼び、"Contrast Adjust"ダイアログを表示する。

パラメータ: 無し
戻り値: 無し
例:

SL.ContrastAdjust()

コメント: PalmOSドキュメントによると、このファンクションは"Palm V Connected Organizer"上でのみ動作する。
PickColorIndex Changed = ScreenLib.PickColorIndex(Index, Title)
説明:

このサブルーチンはPalmOS UIPickColorファンクションを呼び、ユーザがカラーを選択できる"Palette"ダイアログを表示する。指定されたindexおよびRGB値は、GetRGBIndex、GetRGBRed、GetRGBGreen、GetRGBBlueファンクションを呼ぶことによって受け取ることができる。

パラメータ: Index as Integer - suggested Index
Title as String - Dialog title to display
戻り値: Changed as Integer
(0 = User cancelled or chose suggested index)
(1 = User chose a new index)
例:

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)
説明:

このサブルーチンはPalmOS UIPickColorファンクションを呼び、ユーザがカラーを選択できる"RGB"ダイアログを表示する。指定されたindexおよびRGB値は、GetRGBIndex、GetRGBRed、GetRGBGreen、GetRGBBlueファンクションを呼ぶことによって受け取ることができる。

パラメータ: 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
戻り値: Changed as Integer
(0 = User cancelled or chose suggested RGB values)
(1 = User chose new RGB values)
例:

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
説明:

このサブルーチンはPalmOS WinIndexToRGBファンクションを呼び、現在アクティブなカラーテーブルのindexをRGB値に変換する。RGB値は"RGBColorType"と呼ばれる構造で戻される。これは以下のフィールドを含んでいる:

index, red, green, blue

このファンクションはこれら全ての値を取り出すが、indexだけを戻す。red、green、blueの値を受けるには、このファンクションを呼んだ後にGetRGBRed、GetRGBGreen、GetRGBBlueを呼ぶ。例を参照。

パラメータ: Index as Integer
戻り値: 無し
例:

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)
説明:

このファンクションはPalmOS WinRGBToIndexファンクションを呼び、現在アクティブなカラーテーブル(color lookup table: CLUT)のRGB値を最も近いカラーのindexに変換する。RGB値は"RGBColorType"と呼ばれる構造で戻される。

パラメータ: Red as Integer (valid values: 0 to 255)
Green as Integer (valid values: 0 to 255)
Blue as Integer (valid values: 0 to 255)
戻り値: Index as Integer
例:

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)
説明:

このファンクションはPalmOS WinSetForeColorファンクションを呼び、後に続く描画オペレーションで使用するフォアグランドカラーをセットする。

パラメータ: NewIndex as Integer
戻り値: OldIndex as Integer - previous foreground index
例:

Dim OldIndex as Integer
Dim NewIndex as Integer

NewIndex = 134
OldIndex = SL.SetForeColor(NewIndex)

コメント: このファンクションでセットするカラーは、フォームの切り替えや再描画が行われる時にデフォルト値にリセットされる様である。このファンクションはフォームの"After"コードで呼ぶのが一番よいでしょう。
SetBackColor OldIndex = ScreenLib.SetBackColor(NewIndex)
説明:

このファンクションはPalmOS WinSetBackColorファンクションを呼び、後に続く描画オペレーションで使用するバックグランドカラーをセットする。

パラメータ: NewIndex as Integer
戻り値: OldIndex as Integer - previous background index
例:

Dim OldIndex as Integer
Dim NewIndex as Integer

NewIndex = 134
OldIndex = SL.SetBackColor(NewIndex)

コメント: このファンクションでセットするカラーは、フォームの切り替えや再描画が行われる時にデフォルト値にリセットされる様である。このファンクションはフォームの"After"コードで呼ぶのが一番よいでしょう。
SetTextColor OldIndex = ScreenLib.SetTextColor(NewIndex)
説明:

このファンクションはPalmOS WinSetTextColorファンクションを呼び、後に続く描画オペレーションで使用する描画文字のカラーをセットする。

パラメータ: NewIndex as Integer
戻り値: OldIndex as Integer - previous background index
例:

Dim OldIndex as Integer
Dim NewIndex as Integer

NewIndex = 134
OldIndex = SL.SetTextColor(NewIndex)

コメント: このファンクションでセットするカラーは、フォームの切り替えや再描画が行われる時にデフォルト値にリセットされる様である。このファンクションはフォームの"After"コードで呼ぶのが一番よいでしょう。
DrawLine ScreenLib.DrawLine X1, Y1, X2, Y2
説明:

このサブルーチンはPalmOS WinDrawLineファンクションを呼び、描画画面 内に現在のフォアグランドカラーを使って線を描く。このファンクションはNSBasicのDrawLineステートメントを使用した時と同じ結果 です。

パラメータ: X1 as Integer
Y1 as Integer
X2 as Integer
Y2 as Integer
戻り値: 無し
例:

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
説明:

このサブルーチンはPalmOS WinDrawGrayLineファンクションを呼ぶ。このファンクションは灰色では線を描かず、フォアグランドとバックグランドのカラーを交互に描く。

パラメータ: X1 as Integer
Y1 as Integer
X2 as Integer
Y2 as Integer
戻り値: 無し
例:

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
説明:

このサブルーチンはPalmOS WinEraseLineファンクションを呼び、描画画面 内に現在のバックグランドカラーを使って線を描く。

パラメータ: X1 as Integer
Y1 as Integer
X2 as Integer
Y2 as Integer
戻り値: 無し
例:

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
説明:

このサブルーチンはPalmOS WinInvertLineファンクションを呼び、描画画面 内に反転した線を描く。

パラメータ: X1 as Integer
Y1 as Integer
X2 as Integer
Y2 as Integer
戻り値: 無し
例:

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
説明:

このサブルーチンはPalmOS WinDrawPixelファンクションを呼び、描画画面 内に現在のフォアグランドカラーを使ってピクセルを描く。

パラメータ: X as Integer
Y as Integer
戻り値: 無し
例:

Dim X as Integer
Dim Y as Integer

X = 10
Y = 20
SL.DrawPixel X, Y

ErasePixel ScreenLib.ErasePixel X, Y
説明:

このサブルーチンはPalmOS WinErasePixelファンクションを呼び、描画画面 内に現在のバックグランドカラーを使ってピクセルを描く。

パラメータ: X as Integer
Y as Integer
戻り値: 無し
例:

Dim X as Integer
Dim Y as Integer

X = 10
Y = 20
SL.ErasePixel X, Y

InvertPixel ScreenLib.InvertPixel X, Y
説明:

このサブルーチンはPalmOS WinInvertPixelファンクションを呼び、描画画面 内に反転したピクセルを描く。

パラメータ: X as Integer
Y as Integer
戻り値: 無し
例:

Dim X as Integer
Dim Y as Integer

X = 10
Y = 20
SL.InvertPixel X, Y

GetPixel Index = ScreenLib.GetPixel(X, Y)
説明:

このファンクションはPalmOS WinGetPixelファンクションを呼び、描画画面 内の指定ピクセルのカラーを戻す。

パラメータ: X as Integer
Y as Integer
戻り値: Index as Integer
例:

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)
説明:

このファンクションはPalmOS WinScreenLockファンクションを呼び、スクリーンベースアドレスのUIコンセプトをディスプレイが反映されないエリアに切り替えることにより、現在のスクリーンをロックする。このルーチンは、時間の掛かる描画オペレーションをしている時に、ちらつきが起こる現象をさける為にディスプレイをフリーズできる。ScreenUnlockを呼ぶとディスプレイのロックが解け、変更された部分が更新される。ディスプレイを更新する為にスクリーンはロックされた回数分だけ解かれなければならない。

パラメータ: Mode as Integer
(winLockCopy = 0 - copy old screen to new)
(winLockErase = 1 - erase new screen to white)
(winLockDontCare = 2 - don't do anything)
戻り値: Success as Integer
(1 = Success)
(0 = Failure)
例:

Dim Success as Integer
Dim Mode as Integer

Mode = 0 'winLockCopy
Success = SL.ScreenLock(Mode)

ScreenUnlock ScreenLib.ScreenUnlock()
説明:

このサブルーチンはPalmOS WinScreenUnlockファンクションを呼ぶ。ScreenUnlockを呼ぶとディスプレイのロックが解け、変更された部分が更新される。ディスプレイを更新する為にスクリーンはロックされた回数分だけ解かれなければならない。

パラメータ: 無し
戻り値: 無し
例:

SL.ScreenUnlock()

 

PalmOS WinScreenMode API ドキュメント:

目的:

ディスプレイ幾何学、bit depth、カラーサポートを含んだディスプレイパラメータをセットまたは戻す。

プロトタイプ:

	Err WinScreenMode (WinScreenModeOperation operation, 
			   UInt32 *widthP, UInt32 *heightP, 
			   UInt32 *depthP, Boolean *enableColorP) 
パラメータ:

widthP、heightP、depthP、enableColorPパラメータは異なったオペレーションには異なった使われ方をする。詳細は最後のコメントを参照。

	-> operation

		以下のセレクターを指定することにより、このファンクションのオペレーションを決める:
 
 		  winScreenModeGet
			ディスプレイの現在の設定を戻す。 
 
 		  winScreenModeGetDefaults
			ディスプレイのデフォルト設定を戻す。 
 
 		  winScreenModeGetSupportedDepths
			サポートされているスクリーンdepthを示す、16進値をdepthPに入れて戻す。この値の
			バイナリー(2進)がビットフィールド(bitfield)を定義し、1は特定のディスプレイdepthが
			サポートされていることを示す。特定のbit depthを表すビットの位置はその値に相当する。
			このファンクションの説明の最後を参照。
 
 		  winScreenModeGetSupportsColor
			カラーモードが有効なとき、enableColorPパラメータの値としてtrueを戻す。
 
 		  winScreenModeSet
			WinScreenModeファンクションへの他の引数によって指定される値へディスプレイ設定を変更する。
 
 		  winScreenModeSetToDefaults
			ディスプレイ設定をデフォルト値へ変更する。
 
	<-> widthP

		new/oldスクリーン幅へのポインター
 
	<-> heightP

		 new/oldスクリーン高へのポインター
 
	<-> depthP
		
		new/old/availableスクリーンdepthへのポインター
 
	<-> enableColorP

		カラー描画モードを有効にするためにtrueを渡す
 

戻り値:

	エラーがない場合、オペレーション引数によって指定された値が戻る。様々な有効でない
	引数はsysErrParamErr結果コードを戻す原因になる。稀なケースでスペースの割り当てに
	失敗するとmemErrNotEnoughSpaceエラーを戻す。

コメント:

widthP、heightP、depthP、enableColorPパラメータは異なったオペレーションには異なった使われ方をする。
全ての"get"オペレーションは、ファンクションが戻るときに1つの結果と共にこれらの値を上書きする。
winScreenModeSetオペレーションは、NULLポインターでない有効な引数が渡された時、現在のディスプレイ
パラメータを変更する。winScreenModeSetToDefaultsオペレーションは、これら全ての
パラメータに渡された値を無視する。

Table 48.1はこのファンクションが行う各オペレーションに使われるパラメータの要約です。

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  
 


このファンクションはwidthP, heightP, depthP, enableColorPパラメータに渡されるNULLポインターを
無視する。したがって、現在の値を維持する場合はNULLポインターを渡すことができる。同じように、
値を受け取るとき、このファンクションはNULLポインターの引数には値を戻さない。

アプリケーションの起動時にシステムがディスプレイパラメータをデフォルト値にセットし直しますが、
ディスプレイdepthを変更する場合、アプリケーションの終了時に元の状態に回復させることをお勧めします。

他のどのオペレーションも、winScreenModeGetSupportedDepthsが行う方法ではdepthパラメータを
解釈しない。例えば、ディスプレイdepthを8ビットモードにセットするには、0x08(10進で128)ではなく
8(10進)ディスプレイdepthに使用する。

互換性:

3.5 New Feature Setがあるときのみ実行される。OSのバージョンが3.5より以前の場合、このファンク
ションはScrDisplayModeで呼ばれる。ScrDisplayModeのプロトタイプはWinScreenModeと似ていて
以下のようである:

	Err ScrDisplayMode ( ScrDisplayModeOperation operation, 
			     DWordPtr widthP, DWordPtr heightP, 
			     DWordPtr depthP, BooleanPtr enableColorP)

ScrDisplayModeとWinScreenModeの他の違いは、ScrDisplayModeOperation定数は、
winScreenModeではなくscrDisplayModeで始まる。

例: 

WinScreenModeファンクションのwinScreenModeGetSupportedDepthsモードによって提供されて
いる戻り値の例を以下に示します。

このファンクションは、0x08(または2^3、2進では1000)の値を戻すことによって4ビット描画をサポート
していることを示す。2と1のbit depthのサポートは、戻り値が0x03になる。4、2、1のbit depthの
サポートは戻り値が0x0B(2進では1011)になる。24、8、4、2のbit depthのサポートは0x80008A
になる。以下は視覚的な例です。

        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

	0x80008Aでサポートするbit depthの解釈をバイナリ(2進)値に
	よって示している。