Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ fb(4) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

FB(4)  —  NEWS-OS Programmer’s Manual

名称

fb − NEWS フレームバッファデバイスのインターフェース

形式

device fb[0−7] at iop0 priority 44 (2 CPU)
device fb[0−7] at hb0 priority 44 (1 CPU)

#include <newsiop/framebuf.h>

解説

fb[0−7] インターフェースは、 NEWS フレームバッファデバイスへのアクセスを行います。

このフレームバッファのインターフェースによって、 データの読み書き、 ラスタ操作、 線引きなどが行えます。

操作は、 ioctl(2) システムコールを使用して行われます。 ioctl コールにより、 フレームバッファの操作と同様にユーザ定義 (ユーザスペース) ビットマップ上の操作ができます。

データタイプ

次のデータ構造体は、ビットマップ操作に使用されます。

 typedef unsigned short     Word;
 #define BitsPerWord     16
 typedef struct {
        int   x, y;
} lPoint;
 typedef struct {
        lPoint  origin;
        lPoint  extent;
} lRectangle;
 typedef struct {
        char            type;      /∗ BM_FB、BM_MEM BM_0 または BM_1 ∗/
        char            depth;     /∗ ビットマップのプレーン数 ∗/
        unsigned short  width;     /∗ 幅 (ワード単位) ∗/
        lRectangle      rect;      /∗ 定義領域 ∗/
        Word            ∗base;     /∗ BM_MEM 用 ∗/
} lBitmap;
 #define BM_FB        0      /∗ フレームバッファ ∗/
#define BM_MEM       1      /∗ メモリ内のビットマップ (XY 形式) ∗/
#define BM_0         2      /∗ データ ‘0’ の仮想ビットマップ ∗/
#define BM_1         3      /∗ データ ‘1’ の仮想ビットマップ ∗/
#define BM_LBP       4      /∗ LBP フレームバッファ ∗/
 

Word は、 サインなしの 16 ビット (1 ワード) と、 定義されます。

lPoint 構造体は、 ポイントのために使用します。

lRectangle の構造体は、 矩形を作ることに使用されます。 その origin (原点) は、 左上角にあり、 extent は矩形の縦と横の長さを示します。

lBitmap の構造体は、 ビットマップを定義するために使用されます。 type のフィールドは、 ビットマップがメインメモリ内にあるか、 フレームバッファ内にあるかを示します。 BM_FB は、 フレームバッファ内のビットマップであり、 BM_MEM は、 メインメモリ内のビットマップです。 BM_MEM ビットマップは、 XY 形式でデータが格納されています。 また、 プレーン 0 のデータの次にプレーン 1 のデータがあり、 以降その順でずっと続いています。 BM_0 および BM_1 は仮想ビットマップで、 そのデータは、 すべて 0 または 1 です。 BM_0/BM_1 ビットマップはラスタ操作において、 ソースビットマップとしてのみ使用することができます。 depth フィールドは、 ビットマップのプレーン数を与えます。 白黒フレームバッファのビットマップはプレーン数 1 をもち、 カラーフレームバッファでは 24、16、8、4 のプレーン数をもっています。 メインメモリ中のビットマップや BM_0/BM_1 ビットマップでは、 カラー表示が使用されているかいないかにかかわらず、 1 または 24、16、8、4 プレーン数をもつことができます。

BM_MEM ビットマップの width (横幅) は、 X 方向のワード数で与えます。 width は、 BM_FB と BM_0/BM_1 ビットマップに指定することはできません。

rect フィールドは、 ビットマップの大きさを与えます。 この領域内でのみ、操作が可能です。

base フィールドは、 データのスタートポイントを指定します。

BM_MEM ビットマップの場合、 データはワード境界で整列させなければなりません。 最初の列の最初のワードの最初のビットが、 rect.origin で指定した場所に対応します。 これは、 1 のプレーン数をもつビットマップが (width ∗ rect.extent.y) ワードを必要とすることを意味します。 ここで、 width は rect.extent.x ビットを十分に含む大きさであるものとします。

IOCTL

FBIOCNSETDIM

FBIOCNGETDIM
これらは、 ユーザがディスプレイの輝度を調べたり設定するためのものです。 輝度には、 NWB-512 および NWS-711、PWS-1520、PWS-1550 の場合 0 から 3 までのレベルがあります。 0 が最も明るく、 デフォルト値になっています。 NWB-251 および NWB-514、PWS-1560 の場合はレベルがなく ON/OFF のどちらかです。 NWB-225 および NWB-223、NWS-721 には、 この機能がありません。

 int        dimmer_level;
ioctl(fildes, FBIOCNSETDIM, &dimmer_level);
ioctl(fildes, FBIOCNGETDIM, &dimmer_level);
 

FBIOCNBITBLT
このリクエストは、 2 オペランドのラスタ操作 (bitblt) のためのものです。 ソースおよびデスティネーションビットマップは、 メインメモリまたはフレームバッファにあるものです。 BM_0/BM_1 ビットマップはソースのみに使用することができます。 ソースとデスティネーションビットマップのプレーン数は、 等しいか、 またはいずれかのビットマップのプレーン数が 1 でなければなりません。

 /∗ 2 オペランド bitblt ∗/
typedef struct {
        unsigned char  func;          /∗ ファンクションコード ∗/
        char           transp;        /∗ 透過性 ∗/
        int            fore_color;    /∗ フォアグラウンド色 ∗/
        int            aux_color;     /∗ 補色 ∗/
        int            planemask;     /∗ プレーン選択 ∗/
        lBitmap        srcBitmap;     /∗ ソースビットマップ ∗/
        lRectangle     srcRect;       /∗ ソース矩形 ∗/
        lBitmap        destBitmap;    /∗ デスティネーションビットマップ ∗/
        lRectangle     destClip;      /∗ クリップ矩形 ∗/
        lPoint         destPoint;     /∗ デスティネーションポイント ∗/
} lBitblt;
 /∗ 機能 ∗/
#define BF_0    0x0     /∗ 0 ∗/
#define BF_SDA  0x1     /∗ Src (ソース) & Dest (デスティネーション) ∗/
#define BF_SDIA 0x2     /∗ Src & ~Dest ∗/
#define BF_S    0x3     /∗ Src ∗/
#define BF_SIDA 0x4     /∗ ~Src & Dest ∗/
#define BF_D    0x5     /∗ Dest ∗/
#define BF_SDX  0x6     /∗ Src ^ Dest ∗/
#define BF_SDO  0x7     /∗ Src | Dest ∗/
#define BF_SDOI 0x8     /∗ ~(Src | Dest) ∗/
#define BF_SDXI 0x9     /∗ ~(Src ^ Dest) ∗/
#define BF_DI   0xa     /∗ ~Dest ∗/
#define BF_SDIO 0xb     /∗ Src | ~Dest ∗/
#define BF_SI   0xc     /∗ ~Src ∗/
#define BF_SIDO 0xd     /∗ ~Src | Dest ∗/
#define BF_SDAI 0xe     /∗ ~(Src & Dest) ∗/
#define BF_1    0xf     /∗ 1 ∗/
 /∗ プレーンマスク ∗/
#define FB_PLANEALL     0x00ffffff
#define FB_PLANE0       0x00000001
#define FB_PLANE1       0x00000002
#define FB_PLANE2       0x00000004
#define FB_PLANE3       0x00000008
#define FB_PLANE4       0x00000010
#define FB_PLANE5       0x00000020
#define FB_PLANE6       0x00000040
#define FB_PLANE7       0x00000080
#define FB_PLANE8       0x00000100
#define FB_PLANE9       0x00000200
#define FB_PLANE10      0x00000400
#define FB_PLANE11      0x00000800
#define FB_PLANE12      0x00001000
#define FB_PLANE13      0x00002000
#define FB_PLANE14      0x00004000
#define FB_PLANE15      0x00008000
#define FB_PLANE16      0x00010000
#define FB_PLANE17      0x00020000
#define FB_PLANE18      0x00040000
#define FB_PLANE19      0x00080000
#define FB_PLANE20      0x00100000
#define FB_PLANE21      0x00200000
#define FB_PLANE22      0x00400000
#define FB_PLANE23      0x00800000

lBitblt 構造体は、 パラメータとして使用されます。 func フィールドは、 ラスタ操作の機能コードを示します。 transp フィールドは、 透過性に関するもので、 値は 0 または 1 です。 1 の場合、 0 の値をもつソースピクセルに対応するデスティネーションのピクセルは、 影響を受けません。

fore_color と aux_color のフィールドは、 ソースビットマップのプレーン数が 1 の場合、 意味を持ちません。 値 1 をもつソースビットは、 対応するデスティネーションのピクセルとの 操作を実行する前に、 fore_color (に対応したビットパターン) を値としてとります。 一方、 bitblt は、 その機能実行中、 値が 0 のソースビットは aux_color であるものとみなします。 たとえば、 func が BF_S (ソースからデスティネーションへのコピー) であるならば、 値 1 をもつソースビットに対応するピクセルが、 fore_color で表示され、 他のピクセルが aux_color で表示されます。

planemask フィールドは、 操作にどのプレーンを使用するかを指定します。 planemask 中の 1 は、 対応するプレーンを操作の対象とすることを bitblt に知らせます。 それが 0 であった場合には、 そのプレーンは無視されます。 ビット N は、 プレーン N と対応します。

フィールド srcBitmap と srcRect は、 どのソースビットマップを操作に使用するかということを示します。

フィールド destBitmap と destPoint は、 デスティネーションのビットマップを指定します。 destPoint は左上隅を示し、 ラスタ操作が行われる矩形の大きさは srcRect と同じです。 フィールド destClip は、 デスティネーションのどの部分をクリッピングするかを指定するために使用されます。

 lBitblt    bitblt;
ioctl(fildes, FBIOCNBITBLT, &bitblt);
 

FBIOCNBATCHBITBLT
このリクエストは、 多くの bitblt 操作をバッチ処理で実行するために使用されます。 ソースやデスティネーションのビットマップは、 各操作を通じて同じですが、 ソースの矩形とデスティネーションポイントは、 それぞれで違っていてもかまいません。

 typedef struct {
        lRectangle     srcRect;       /∗ ソース矩形 ∗/
        lPoint         destPoint;     /∗ デスティネーションポイント ∗/
} lSrcDest
  /∗
 ∗ batch bitblt
 ∗/
typedef struct {
        unsigned char  func;          /∗ 機能コード ∗/
        char           transp;        /∗ 透過性 ∗/
        int            fore_color;    /∗ フォアグラウンド色 ∗/
        int            aux_color;     /∗ 補色 ∗/
        int            planemask;     /∗ プレーン選択 ∗/
        lBitmap        srcBitmap;     /∗ ソースビットマップ ∗/
        lBitmap        destBitmap;    /∗ デスティネーションビットマップ ∗/
        lRectangle     destClip;      /∗ クリップ矩形 ∗/
        int            nSrcDest;      /∗ リスト中の src-dest の数 ∗/
        lSrcDest       ∗srcDestList;  /∗ src-dest 指定のポインタ ∗/
} lBatchBitblt;
 #define MAX_BATCHBITBLT 1024    /∗ src-dest リストの最大数 ∗/
 

lBatchBitblt 構造体は、 lBitblt 構造体と似ており、 ソースとデスティネーションのビットマップを含んでいます。 srcDestList フィールドは、 ソース矩形のリストとデスティネーションポイントのリストを指定し、 その要素の数は nSrcDest フィールドに与えられます。

 lBatchBitblt       bbitblt;
ioctl(fildes, FBIOCNBATCHBITBLT, &bbitblt);
 

FBIOCNTILEBITBLT
このリクエストは、 ‘パターン塗りつぶし’ のラスタ操作で使用します。

 /∗ タイル 2 オペランド bitblt ∗/
typedef struct {
        unsigned char  func;          /∗ 機能コード ∗/
        char           transp;        /∗ 透過性 ∗/
        int            fore_color;    /∗ フォアグラウンド色 ∗/
        int            aux_color;     /∗ 補色 ∗/
        int            planemask;     /∗ プレーン選択 ∗/
        lBitmap        ptnBitmap;     /∗ パターンビットマップ ∗/
        lRectangle     ptnRect;       /∗ パターン矩形 ∗/
        lPoint         refPoint;      /∗ 参照ポイント ∗/
        lBitmap        destBitmap;    /∗ デスティネーションビットマップ ∗/
        lRectangle     destClip;      /∗ クリップ矩形 ∗/
        lRectangle     destRect;      /∗ デスティネーション矩形 ∗/
} lTileBitblt;
 

lTileBitblt 構造体は、 パラメータの受け渡しに使用されます。 ptnBitmap と ptnRect フィールドは、 使用するパターンを指定します。 refPoint フィールドは、 塗りつぶし操作の参照ポイントを示します。 これは、 その参照ポイントとパターンの左上隅が、 デスティネーションビットマップ上で一致するように作られるという意味です。 参照ポイントは、 デスティネーション矩形またはそのクリップ矩形の外側に指定することもできます。

 lTileBitblt        tbitblt;
ioctl(fildes, FBIOCNTILEBITBLT, &tbitblt);
 

FBIOCNPOLYLINE
このリクエストは、 ユーザがポリライン (直線) を引くためのものです。 ユーザは自由に、 線の色、 線のパターン、 ラスタ操作の機能コードを指定することができます。

 /∗ 線 ∗/
typedef struct {
        unsigned int   lptn;        /∗ ラインパターン ∗/
        short          np;          /∗ ポイント数 ∗/
        lPoint         ∗plist;      /∗ ポイントリスト ∗/
        int            fore_color;  /∗ フォアグラウンド色 ∗/
        int            aux_color;   /∗ 補色 ∗/
        int            planemask;   /∗ プレーン選択 ∗/
        char           transp;      /∗ 透過性 ∗/
        unsigned char  func;        /∗ ラスタ操作機能コード ∗/
        char           dlpf;        /∗ 最終ポイント描画フラグ ∗/
        lRectangle     clip;        /∗ クリップ矩形 ∗/
        lBitmap        drawBM;      /∗ 描画するビットマップ ∗/
} lPrimLine;
 /∗ ラインパターン(例) ∗/
#define LINE_SLD        (unsigned)0xffffffff  /∗ ソリッド ∗/
#define LINE_DSH        (unsigned)0xfcfcfcfc  /∗ ダッシュ - ∗/
#define LINE_DOT        (unsigned)0xcccccccc  /∗ ドット . ∗/
#define LINE_DSHDOT     (unsigned)0xfff18fff  /∗ ダッシュドット -. ∗/
#define LINE_DSHDOTDOT  (unsigned)0xff8c63ff  /∗ ダッシュドットドット -.. ∗/
 

lPrimLine 構造体は、 ポリラインをリクエストするために使用します。 lptn フィールドを使って 32 ビットのラインパターンを指定することができます。 plist フィールドは、 呼び出しにおいて np ポイントの受け渡しに使用します。 np は、 ポイント数であって線の数ではありません。 fore_color、aux_color、planemask、transp と func フィールドの説明は、 FBIOCNBITBLT を参照してください。 dlpf フラグは、 リスト中の最後のポイントを描くか描かないかを指定します。 つまり、 フラグが 0 であればそのポイントは描かれず、 他の場合は描かれます。 閉じた図形を描く場合に、 このフィールドに 0 が使われます。 drawBM と clip フィールドは、 ビットマップとクリップ矩形を別々に指定するのに使用されます。

 lPrimline  primline;
ioctl(fildes, FBIOCNPOLYLINE, &primline);
 

FBIOCNDJPOLYLINE このリクエストは FBIOCNPOLYLINE と似ています。
FBIOCNPOLYLINE は、 連続する線分を描くため使用されますが、 FBIOCNDJPOLYLINE は不連続線に使用されます。 dlpf フィールドは、 各線セグメントの終点を描くか描かないかを指定するために使用されます。

 lPrimline  primline;
ioctl(fildes, FBIOCNDJPOLYLINE, &primline);
 

FBIOCNPOLYMARKER
このリクエストは、 ポリマーカーを描くために使用します。 これは、 指定したパターンといくつかのビットマップ間でラスタ操作を実行するためのものです。

 /∗ マーカー ∗/
typedef struct {
        short          np;          /∗ ポイント数 ∗/
        lPoint         ∗plist;      /∗ ポイントリスト ∗/
        lRectangle     ptnRect;     /∗ パターン矩形 ∗/
        lBitmap        ptnBM;       /∗ パターンビットマップ ∗/
        int            fore_color;  /∗ フォアグラウンド色 ∗/
        int            aux_color;   /∗ 補色 ∗/
        int            planemask;   /∗ プレーン選択 ∗/
        char           transp;      /∗ 透過性 ∗/
        unsigned char  func;        /∗ ラスタ操作機能コード ∗/
        lRectangle     clip;        /∗ クリップ矩形 ∗/
        lBitmap        drawBM;      /∗ 描画するビットマップ ∗/
} lPrimMarker;
 

lPrimMaker 構造体は、 ポリマーカーの描画に使用されます。 ptnBM と ptnRect フィールドは、 ラスタ操作でどのパターンを使用するかを指定します。 フィールド plist と np は、 ポイントリストとポイント数をそれぞれ与えます。

 lPrimMarker        primmarkers;
ioctl(fildes, FBIOCNPOLYMARKER, &primmaker);
 

FBIOCNRECTANGLE
矩形を与えられたパターンで埋めます。

 /∗ 矩形を塗りつぶす ∗/
typedef struct {
        lRectangle      rect;         /∗ 矩形 ∗/
        lPoint          refPoint;     /∗ 塗りつぶし参照ポイント ∗/
        lRectangle      ptnRect;      /∗ パターン矩形 ∗/
        lBitmap         ptnBM;        /∗ パターンビットマップ ∗/
        int             fore_color;   /∗ フォアグラウンド色 ∗/
        int             aux_color;    /∗ 補色 ∗/
        int             planemask;    /∗ プレーン選択 ∗/
        char            transp;       /∗ 透過性 ∗/
        unsigned char   func;         /∗ ラスタ操作機能コード ∗/
        lRectangle      clip;         /∗ クリップ矩形 ∗/
        lBitmap         drawBM;       /∗ 描画するビットマップ ∗/
} lPrimRect;
 

このリクエストは、 lPrimRect 構造体を使用します。 rect フィールドは、 矩形を指定し、 一方、 ptnBM と ptnRect フィールドは、 その矩形を塗りつぶすパターンを指定します。 refPoint フィールドは、 パターンの左上隅に一致させるポイントを含みます。 refPoint は、 矩形とクリップ内にある必要はありません。

 lPrimRect  rect;
ioctl(fildes, FBIOCNRECTANGLE, &rect);
 

FBIOCNFILLSCAN
パターンによる塗りつぶしが、 指定された走査線にそって実行されます。

 /∗ 走査線配列 ∗/
#define SSCANL
typedef struct {
        short   y;
        short   x0, x1;
} lScanl;
 /∗ パターンを塗りつぶす ∗/
typedef struct {
        short           nscan;          /∗ 走査数 ∗/
        lScanl          ∗scan;          /∗ 走査線データ ∗/
        lPoint          refPoint;       /∗ 塗りつぶし参照ポイント ∗/
        lRectangle      ptnRect;        /∗ パターン矩形 ∗/
        lBitmap         ptnBM;          /∗ パターンビットマップ ∗/
        int             fore_color;     /∗ フォアグラウンド色 ∗/
        int             aux_color;      /∗ 補色 ∗/
        int             planemask;      /∗ プレーン選択 ∗/
        char            transp;         /∗ 透過性 ∗/
        unsigned char   func;           /∗ ラスタ操作機能コード ∗/
        lRectangle      clip;           /∗ クリップ矩形 ∗/
        lBitmap         drawBM;         /∗ 描画するビットマップ ∗/
} lPrimFill;
 

lScanl 構造体は、 走査線のために使用します。 一方、 lPrimFill 構造体は、 すべてのパラメータの受け渡しに使用します。 scan フィールドは走査線の配列へのポインタを含み、 nscan フィールドは何本の走査線があるかを示します。 パターンは、 ptnBM と ptnRect フィールドを使用することによって指定します。 また、 refPoint は、 パターンの左上隅に設定しておく必要のある参照ポイントです。

 lPrimFill  fill;
ioctl(fildes, FBIOCNFILLSCAN, &fill);
 

FBIOCNTEXT
文字列が指定したフォントで書き込まれます。 使用されるフォントは、 ビットマップフォントや ROM フォントです。

 /∗ テキスト ∗/
typedef struct {
        int             dx, dy;         /∗ ベクトル ∗/
        lPoint          fp;             /∗ フォントビットマップ原点 ∗/
        short           width, height;  /∗ 文字幅、文字高さ ∗/
        short           column;         /∗ フォントビットマップ幅 (文字数) ∗/
        unsigned short  first_chr;      /∗ 最小文字コード ∗/
        unsigned short  last_chr;       /∗ 最大文字コード ∗/
        lBitmap         fontBM;         /∗ フォントビットマップ ∗/
        int             fore_color;     /∗ フォアグラウンド色 ∗/
        int             aux_color;      /∗ 補色 ∗/
        int             planemask;      /∗ プレーン選択∗/
        lBitmap         drawBM;         /∗ 描画先ビットマップ ∗/
        lRectangle      clip;           /∗ クリップ矩形 ∗/
        lPoint          p;              /∗ 描画位置 ∗/
        unsigned char   ∗str;           /∗ 文字列 ∗/
        short           len;            /∗ 文字列長 ∗/
        char            type;           /∗ フォントの種類 ∗/
        char            transp;         /∗ 透過性 ∗/
        unsigned char   func;           /∗ ラスタ操作機能コード∗/
        char            ex_factor;      /∗ 拡大ファクタ∗/
} lPrimText;
 /∗ ビットマップフォントタイプ ∗/
#define ROM_ASCII       0
#define ROM_KANJI       1
#define ASCII           2
 

文字を書くためには、 lPrimText 構造体を使用しなければなりません。 type フィールドは、 どのフォントを使用するかを示します。

    ROM_ASCIIROM font (1 バイトコード)
    ROM_KANJIROM font (JIS 漢字コード)
    ASCIIビットマップフォント(1 バイトコード)

len フィールドには、 バイト単位で文字列の長さを与えます。 漢字を使用する場合、 これが文字数と一致しないことに注意してください。 str フィールドは、 文字列へのポインタです。 p フィールドは、 最初の文字の左上角に一致するポイントにします。 dx と dy フィールドは、 文字列を書く方向を示します。 たとえば、 前に書かれた文字の 26 ドット右に水平に文字を書くとき、 dx = 26 << 16; dy=0 というように使用します。 ex_factor フィールドは、 水平方向の拡大ファクタを示します。 たとえば、1 であれば通常の幅になり、 2 であればその幅は 2 倍になります。 fp、width、 height、column フィールドは、 フォントビットマップを定義します。 フォントビットマップの左上隅は fp で、 文字の幅や高さは、 width と height によって決まります (文字の大きさは、一定であり、 可変ピッチのフォントは、 サポートされていません)。 column フィールドには、 一列の文字数が入ります。 フィールド first_chr と last_chr は、 フォントビットマップの中にある最初と最後の文字を示します。

 lPrimtText text;
ioctl(fildes, FBIOCNTEXT, &text);
 

FBIOCNGETSCRTYPE
このリクエストは、 ビットマップディスプレイの型を返します。

 /∗
 ∗      スクリーンタイプ
 ∗/
typedef struct {
        short           colorwidth;     /∗ カラー幅 ∗/
        short           plane;          /∗ プレーン数 ∗/
        char            type;           /∗ デバイスタイプ ∗/
        char            unit;           /∗ ユニットナンバー ∗/
        lRectangle      bufferrect;     /∗ フレームバッファ領域 ∗/
        lRectangle      visiblerect;    /∗ 表示画面領域 ∗/
} lScrType;
 

lScrType 構造体は、 パラメータを受け渡すために使用されます。 colorwidth フィールドは、 カラーパレットの赤、緑、青の各値に使われるビット数を示します。 幅は 4 または 8 です。 4 ならばバイト中の上位の 4 ビットが使用され、 8 ならば 8 ビット全部が使用されます。 plane フィールドはプレーンの数を示し、 1 ならばモノクロディスプレイであり、 8 (または 4) ならばカラーディスプレイまたはグレースケールディスプレイです。 type フィールドはビットマップディスプレのタイプを示し、 以下のようにインターフェースボードに固有の値が割り当てられています。


#define FB_NWB512       1
#define FB_NWB225       2
#define FB_POPM         3
#define FB_POPC         4
#define FB_NWB514       5
#define FB_NWB251       6
#define FB_LCDM         7
#define FB_LCDC         8
#define FB_NWB518       9
#define FB_NWB252       10
#define FB_NWB253       11
#define FB_NWB254       12
#define FB_NWB255       13
#define FB_SLB101       14

unit フィールドは同じインターフェースを複数枚使用する場合に、 ボード上のディップスイッチで選択されたアドレス順にボードの番号を示します。 bufferrect フィールドは、 フレームバッファの大きさを、 visiblerect フィールドは、 フレームバッファの表示部分を示します。

 lScrType   scrtype;
ioctl(fildes, FBIOCNGETSCRTYPE, &scrtype);
 

FBIOCNGETPALETTE

FBIOCNSETPALETTE
これらは、 カラーパレットデータの読み書きをします。

 /∗
 ∗     カラー
 ∗/
 typedef struct {
        short   index;  /∗ パレット番号 ∗/
        struct {
                short   r, g, b;
        } rgb;
} sPalette;
 typedef struct {
        int             count;
        sPalette        ∗palette;
} lPalette;
 

パレット番号は、 0 から 255 (8 プレーン) または 0 から 16 (4 プレーン) の範囲です。 palette フィルドは、 count で示された個数の sPalette 構造対の配列へのポインタです。 FBIOCNGETPALETTE は、 index フィールドに渡されたパレット番号を要求します。 rgb フィールドは、 コールされた後に書き込まれます。 FBIOCNSETPALETTE は、 index と rgb フィールドをユーザが設定するために 使用します (rgb = 赤、緑、青)。

 lPalette   palette;
ioctl(fildes, FBIOCNGETPALETTE, &palette);
ioctl(fildes, FBIOCNSETPALETTE, &palette);
 

関連ファイル

/dev/fb[0−7]

関連事項

NWM-660

バグ

NWS-1830/50 では、 異なるプロセスから同時にアクセスした場合にシステムダウンする場合があります。

FBIOCNBATCHBITBLT などのパラメータとして配列を必要とするリクエストは、 配列の大きさに制限があります。

LBP インターフェースはまだサポートされていません。

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026