#include "l_bitmap.h"
L_LTDIS_API L_INT L_WindowLevel(pBitmap、nLowBit、nHighBit、pLUT、ulLUTLength、uFlags)
pBITMAPHANDLE pBitmap; |
/* ビットマップハンドルへのポインター*/ |
L_INT nLowBit; |
/* 使う低位ビット*/ |
L_INT nHighBit; |
/* 使う高位ビット*/ |
L_RGBQUAD* pLUT; |
/* ルックアップテーブル*/ |
L_UINT ulLUTLength; |
/* 多くのエントリ*/ |
L_UINT uFlags; |
/* フラグ*/ |
描画または描画と画像処理のウィンドウ水準測定オプションの上のセットは、特定のビットマップのために機能します。
パラメーター |
説明 |
|
pBitmap |
レベル調整されるビットマップを参照文に引用しているビットマップハンドルへのポインター。 |
|
nLowBit |
レベリングのために使われる低位ビットを示している値。0の≦nLowBit≦nHighBit≦(12ビットのグレースケールの場合は11、16ビットのグレースケールは15)。 |
|
nHighBit |
レベリングのために使われる高位ビットを示している値。0の≦nLowBit≦nHighBit≦(12ビットのグレースケールの場合は11、16ビットのグレースケールは15)。 |
|
pLUT |
ユーザー定義の変換を実装する場合に使用する、オプションのルックアップテーブル。0~2が乗に発生した明度値ごとに(nHighBit ― nLowBit + 1)-1、RGBクアッドを格納するルックアップテーブルの対応するエントリが、なければなりません。pLUTがNULLであるならば、変換は通常のシフト(右であるか左の)です、そして、描画されたビットマップは8ビットグレースケールです。pLUTがNULLでないならば、描画されたビットマップは24ビットビットマップです。 |
|
ulLUTLength |
エントリの数を示している値は、pLUTによってをポイントしました。pLUTがNULLであるならば、これをNULLにも設定します。 |
|
uFlags |
pLUTが描画と画像処理関数によって、または、描画関数だけによって使われるかどうか示している値。設定可能な値は、以下の通りです。 |
|
|
値 |
意味 |
|
WINDOWLEVEL_PAINT |
[0x00]、pLUTが描画関数だけによって使われます。 |
|
WINDOWLEVEL_PAINT_AND_PROCESSING |
[0x01]、pLUTが描画とimage処理ルーチンのために使われます。 |
戻り値
SUCCESS |
関数は成功しました。 |
<1 |
エラーが発生しました。リターンコードを参照してください |
コメント
「オンデマンドで」描画のためのウィンドウ-レベリングが機能して、画像データを変えないと定めます。ウィンドウレベル調整を行ったビットマップに画像データを変換するために、L_WindowLevelBitmapを使います。
この関数はL_WindowLevelExtと類似していますが、それはコンポーネントLUTにつき16ビットの代わりに8ビット処方コンポーネントLUTを使います。16ビットLUTは8ビットLUTより多くの精度を提供するので、L_WindowLevelの代わりにL_WindowLevelExtを使うことはより良好です。
16ビットと8ビットLUTは同期します、そしてそれは、LUTがL_WindowLevelExtによって適用した手段はL_WindowLevelで適用されるLUTを変更します、そして、逆もまた同じ。
WINDOW_LEVEL_PAINT_PROCESSINGが指定されるならば、すべての画像処理関数はpLUTを考慮に入れます。
BITMAPHANDLEは、pLUT、PaintHighBitとPaintLowBitを含む内部使用を目的とするその構造体で、若干のメンバを持っています。これらのメンバは、ウィンドウ-レベリングとき、役に立ちます。これらのメンバの詳細については、「BITMAPHANDLE LUTとそのUses トピック」を参照してください。BITMAPHANDLE構造体に関する詳細な情報はLTKRN.Hヘッダファイルで見つかります。そして、それは構造体全体を説明します。
ウィンドウレベル調整を行ったであった保存しているビットマップに関する情報については、「保存しているウィンドウレベル調整を行ったビットマップ」を参照してください。
必須のDLLとライブラリ
ツールキットバージョンに基づいた正確なDLLとライブラリのリストについては、「アプリケーションとともに配布するファイル」を参照してください。 |
Win32、x64、Linux。
参照
サンプル
このサンプルは、カスタムパレットでビットマップを描画して、処理するために、ウィンドウレベル値を設定します。
L_INT WindowLevelExample(pBITMAPHANDLE pBitmap) { L_INT nRet; L_UINT32 x; RGBQUAD* ptmp; RGBQUAD* pLUT; L_INT nLowBit; L_INT nHighBit; L_INT nLow; L_INT nHigh; L_UINT32 nSize; /* Change the bitmap to 16-bit grayscale */ nRet = L_GrayScaleBitmap(pBitmap, 16 ); if(nRet != SUCCESS) return nRet; nRet = L_GetMinMaxBits(pBitmap, &nLowBit, &nHighBit, 0); if(nRet != SUCCESS) return nRet; nRet = L_GetMinMaxVal(pBitmap, &nLow, &nHigh, 0); if(nRet != SUCCESS) return nRet; nSize = (L_UINT32)(1L<<(pBitmap->HighBit - pBitmap->LowBit + 1)); pLUT = (RGBQUAD *)GlobalAllocPtr(GHND, nSize * sizeof(RGBQUAD)); ptmp = pLUT; /* fill the first half of the LUT with RED */ for(x=0;x<nSize/2;x++) { ptmp->rgbRed = 255; ptmp->rgbGreen = 0; ptmp->rgbBlue = 0; ptmp->rgbReserved = 0; ptmp++; } /* fill the rest with gray values */ for(x=nSize/2;x<nSize;x++) { ptmp->rgbRed = ((L_UCHAR) ((L_UINT32) (x - nLow) * 255 / (nHigh - nLow))); ptmp->rgbGreen = ptmp->rgbRed; ptmp->rgbBlue = ptmp->rgbGreen; ptmp->rgbReserved = 0; ptmp++; } nRet = L_WindowLevel ( pBitmap, nLowBit, nHighBit, (RGBQUAD *)pLUT, nSize, WINDOWLEVEL_PAINT_AND_PROCESSING ); if(nRet != SUCCESS) return nRet; GlobalFreePtr(pLUT); return SUCCESS; }