## Tcl9.0.3/Tk9.0.3 Documentation > Tk C API > GetColor

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    Tk_AllocColorFromObj, Tk_GetColor, Tk_GetColorFromObj, Tk_GetColorByValue, Tk_NameOfColor, Tk_FreeColorFromObj, Tk_FreeColor — 色の基礎データの維持 maintain database of colors
  SYNOPSIS
    #include <tk.h>
    XColor *
    Tk_AllocColorFromObj(interp, tkwin, objPtr)
    XColor *
    Tk_GetColor(interp, tkwin, name)
    XColor *
    Tk_GetColorFromObj(tkwin, objPtr)
    XColor *
    Tk_GetColorByValue(tkwin, prefPtr)
    const char *
    Tk_NameOfColor(colorPtr)
    GC
    Tk_GCForColor(colorPtr, drawable)
    Tk_FreeColorFromObj(tkwin, objPtr)
    Tk_FreeColor(colorPtr)
  引数 ARGUMENTS
    Tcl_Interp *interp (入力in)
    Tk_Window tkwin (入力in)
    Tcl_Obj *objPtr (入出力in/out)
    const char *name (入力in)
    XColor *prefPtr (入力in)
    XColor *colorPtr (入力in)
    Drawable drawable (入力in)
  説明 DESCRIPTION
    colorname
    #RGB
    #RRGGBB
    #RRRGGGBBB
    #RRRRGGGGBBBB
  KEYWORDS

### NAME

Tk_AllocColorFromObj, Tk_GetColor, Tk_GetColorFromObj, Tk_GetColorByValue, Tk_NameOfColor, Tk_FreeColorFromObj, Tk_FreeColor — 色の基礎データの維持 maintain database of colors

### SYNOPSIS

#include <tk.h>
XColor *
Tk_AllocColorFromObj(interp, tkwin, objPtr)
XColor *
Tk_GetColor(interp, tkwin, name)
XColor *
Tk_GetColorFromObj(tkwin, objPtr)
XColor *
Tk_GetColorByValue(tkwin, prefPtr)
const char *
Tk_NameOfColor(colorPtr)
GC
Tk_GCForColor(colorPtr, drawable)
Tk_FreeColorFromObj(tkwin, objPtr)
Tk_FreeColor(colorPtr)

### 引数 ARGUMENTS

Tcl_Interp *interp (入力in)
  不都合報告の為の解釈実行機能｡　 Interpreter to use for error reporting.

Tk_Window tkwin (入力in)
  色の使用が予定されている窓の為の字句｡ Token for window in which color will be used.

Tcl_Obj *objPtr (入出力in/out)
  望ましい色を記述する文字列値; 内部代表は (XColor *)に対応する高速記憶指示子に修飾される｡　　 String value describes desired color; internal rep will be modified to cache pointer to corresponding (XColor *).

const char *name (入力in)
  objPtr と同じ､但し､文字列として渡される色の記述は除外する､また､結果の (XColor *) は高速記憶されない｡ 　 Same as objPtr except description of color is passed as a string and resulting (XColor *) is not cached.

XColor *prefPtr (入力in)
  望ましい色の赤､緑､青強度を示す｡　 Indicates red, green, and blue intensities of desired color.

XColor *colorPtr (入力in)
  X 色情報への指示子｡ Tk_AllocColorFromObj か Tk_GetColor か Tk_GetColorByValue への事前の呼出しにより割当てられていなければならない､但し Tk_NameOfColor に渡す時を除く｡　 Pointer to X color information. Must have been allocated by previous call to Tk_AllocColorFromObj, Tk_GetColor or Tk_GetColorByValue, except when passed to Tk_NameOfColor.

Drawable drawable (入力in)
  描画可能､その中で結果の画像文脈が使われる事になる｡色が割付けられていた窓と同じ画面と深さを有しなければならない｡ Drawable in which the result graphics context will be used. Must have same screen and depth as the window for which the color was allocated.

### 説明 DESCRIPTION

これ等の手続は Tk 応用譜により使われる色を管理する｡それらは何時であれ可能であれば色の共有を許容し､色地図空間が保存され､色地図空間を使い果たした時に最近の利用できる色を取出す｡ These procedures manage the colors being used by a Tk application. They allow colors to be shared whenever possible, so that colormap space is preserved, and they pick closest available colors when colormap space is exhausted.

色の文書的記述が与えられ､ Tk_AllocColorFromObj は画素値を配置する､それは特定の窓内に色を輝かせる｡望ましい色は次の形式の内の１つを有するべき文字列の値によって指定される: Given a textual description of a color, Tk_AllocColorFromObj locates a pixel value that may be used to render the color in a particular window. The desired color is specified with a value whose string value must have one of the following forms:

colorname
  中央集中処理装置の基礎色データファイル内に定義された色に就いてのどれかの適切な文書的名前､譬えば red や PeachPuff ｡　　　 Any of the valid textual names for a color defined in the server's color database file, such as red or PeachPuff.

#RGB

#RRGGBB

#RRRGGGBBB

#RRRRGGGGBBBB
  色を表示する為に使われる赤､緑､青強度による数値的指定｡それぞれの､赤､緑､青は一つの十六進数を表現する｡ 4-bit か 8-bit か 12-bit か 16-bit の値によって指定する４つの色の形式が許容される｡夫々の色に 16 ビットより少なく与えられる時､それらはその色の最上位ビットを表現する､その場合､空いている下位ビットは利用できる上位ビットから繰返し複写する｡譬えば #3a7 は #3333aaaa7777 と同じである｡(訳註 凝り過ぎ) A numeric specification of the red, green, and blue intensities to use to display the color. Each R, G, or B represents a single hexadecimal digit. The four forms permit colors to be specified with 4-bit, 8-bit, 12-bit or 16-bit values. When fewer than 16 bits are provided for each color, they represent the most significant bits of the color, while the lower unfilled bits will be repeatedly replicated from the available higher bits. For example, #3a7 is the same as #3333aaaa7777.

Tk_AllocColorFromObj はXColor 構造へのポインターを返す; 構造は割当てられた色(それは要求とは僅かに異なり､画面の制限に依存する)と､ tkwin 内の色を描画する為に使える画素値の正確な輝度を示す｡もし､ Tk_AllocColorFromObj 内に不都合が生じると(未知の色名のような)､ NULL が返され､解釈実行機能が NULL でなければ､不都合伝言文が解釈実行機能の結果に保存される｡もし tkwin の色地図が一杯になると､ Tk_AllocColorFromObj は色地図内の､最も近い実在する色を使う｡ Tk_AllocColorFromObj は objPtr,内の返り値に関する情報を高速域に記憶し､ Tk_AllocColorFromObj や Tk_GetColorFromObj の様な手続の将来の呼出しを加速する｡ Tk_AllocColorFromObj returns a pointer to an XColor structure; the structure indicates the exact intensities of the allocated color (which may differ slightly from those requested, depending on the limitations of the screen) and a pixel value that may be used to draw with the color in tkwin. If an error occurs in Tk_AllocColorFromObj (such as an unknown color name) then NULL is returned and an error message is stored in interp's result if interp is not NULL. If the colormap for tkwin is full, Tk_AllocColorFromObj will use the closest existing color in the colormap. Tk_AllocColorFromObj caches information about the return value in objPtr, which speeds up future calls to procedures such as Tk_AllocColorFromObj and Tk_GetColorFromObj.

Tk_GetColor は Tk_AllocColorFromObj と同一であるが､違いは､色の記述は値の代りに文字列により指定されることである｡これは Tk_GetColor を返り値を高速記憶から妨げており､その為 Tk_GetColor は Tk_AllocColorFromObj よりも効率が見劣りする｡ Tk_GetColor is identical to Tk_AllocColorFromObj except that the description of the color is specified with a string instead of a value. This prevents Tk_GetColor from caching the return value, so Tk_GetColor is less efficient than Tk_AllocColorFromObj.

Tk_GetColorFromObj は窓と色の作成に使われた記述を与えられ､既存の色に関する字句を返す｡ Tk_GetColorFromObj は実際色を作成はしない; 色は以前の Tk_AllocColorFromObj か Tk_GetColor 呼出しによって既に作成されていなければならない｡返り値は objPtr 内に高速記憶され､同じ objPtr と tkwin を伴う Tk_GetColorFromObj への将来の呼出しを加速する｡ Tk_GetColorFromObj returns the token for an existing color, given the window and description used to create the color. Tk_GetColorFromObj does not actually create the color; the color must already have been created with a previous call to Tk_AllocColorFromObj or Tk_GetColor. The return value is cached in objPtr, which speeds up future calls to Tk_GetColorFromObj with the same objPtr and tkwin.

Tk_GetColorByValue は Tk_GetColor に似ているが違いは､望ましい色が colorPtr によって指される構造の､赤､緑､青欄によって指し示される｡ Tk_GetColorByValue is similar to Tk_GetColor except that the desired color is indicated with the red, green, and blue fields of the structure pointed to by colorPtr.

この梱包は現在使われている全ての色の基礎データを維持している｡もし､同じ色が Tk_GetColor か Tk_AllocColorFromObj から多数回要求されるか(譬えば､異なる窓から)､同じ輝度が Tk_GetColorByValue から多数回要求されると､既存の画素値が再使用される｡既存の色の再使用は窓中央集中処理装置のどの相互作用も避ける､それにより効率的に割当を行う｡この手続は移植可能の全てのOSで動く相互作用を提供する｡この理由で一般に低水準の XAllocColor の様な手続の代りに Tk_AllocColorFromObj, Tk_GetColor か Tk_GetColorByValue を使うべきである｡ This package maintains a database of all the colors currently in use. If the same color is requested multiple times from Tk_GetColor or Tk_AllocColorFromObj (e.g. by different windows), or if the same intensities are requested multiple times from Tk_GetColorByValue, then existing pixel values will be re-used. Re-using an existing pixel avoids any interaction with the window server, which makes the allocation much more efficient. These procedures also provide a portable interface that works across all platforms. For this reason, you should generally use Tk_AllocColorFromObj, Tk_GetColor, or Tk_GetColorByValue instead of lower level procedures like XAllocColor.

この梱包への異なる呼出しは同じ共有された画素値を返すかもしれないので､呼出し側はこの手続函数に返された画素の色を決して変えてはならない｡もし色値を動的に変える必要がある場合は､色に就いての画素値を割当てる為に XAllocColorCells を使うべきである｡ Since different calls to this package may return the same shared pixel value, callers should never change the color of a pixel returned by the procedures. If you need to change a color value dynamically, you should use XAllocColorCells to allocate the pixel value for the color.

手続函数 Tk_NameOfColor は大略 Tk_GetColor の逆である｡もしその colorPtr 引数が Tk_AllocColorFromObj か Tk_GetColor によって作成された場合､返り値は色を作る為に使われた文字列である｡もし colorPtr が Tk_GetColorByValue 呼出しによって作成された､又は他の仕組みによる場合､返り値は同じ色を返す Tk_GetColor に渡すことができる文字列である｡註意: Tk_NameOfColor に返される文字列は次の Tk_NameOfColor 呼出し迄のみ存続が保証される｡ The procedure Tk_NameOfColor is roughly the inverse of Tk_GetColor. If its colorPtr argument was created by Tk_AllocColorFromObj or Tk_GetColor then the return value is the string that was used to create the color. If colorPtr was created by a call to Tk_GetColorByValue, or by any other mechanism, then the return value is a string that could be passed to Tk_GetColor to return the same color. Note: the string returned by Tk_NameOfColor is only guaranteed to persist until the next call to Tk_NameOfColor.

Tk_GCForColor は画像の状況を返す､その前景欄は colorPtr に関して割当てられ､その他の全ての欄は無為設定を有する｡これは色について基本的な描画を行う容易な方法を提供する｡画像の状況は色と共に高速記憶され､ colorPtr が存在する間においてのみ実在する; それは colorPtr への最後の参照が Tk_FreeColor 呼出しにより解放された時､解放される｡ Tk_GCForColor returns a graphics context whose foreground field is the pixel allocated for colorPtr and whose other fields all have default values. This provides an easy way to do basic drawing with a color. The graphics context is cached with the color and will exist only as long as colorPtr exists; it is freed when the last reference to colorPtr is freed by calling Tk_FreeColor.

色が最早必要とされない時､それを解放する為に Tk_FreeColorFromObj か Tk_FreeColor が呼出されるべきである｡ Tk_FreeColorFromObj に関して､解放される色はそれを作る時に使われたと同じ情報を指定される; Tk_FreeColor に就いては､解放される色は XColor 構造へのポインターで指定される｡夫々の Tk_AllocColorFromObj か Tk_GetColor か Tk_GetColorByValue.呼出しに就き､厳密に１回の Tk_FreeColorFromObj か Tk_FreeColor への呼出しがあるべきである｡ When a color is no longer needed Tk_FreeColorFromObj or Tk_FreeColor should be called to release it. For Tk_FreeColorFromObj the color to release is specified with the same information used to create it; for Tk_FreeColor the color to release is specified with a pointer to its XColor structure. There should be exactly one call to Tk_FreeColorFromObj or Tk_FreeColor for each call to Tk_AllocColorFromObj, Tk_GetColor, or Tk_GetColorByValue.

### KEYWORDS

color, intensity, value, pixel value
Copyright © 1990-1991 The Regents of the University of California.
Copyright © 1994-1998 Sun Microsystems, Inc.