# Graphics

## 概要 - Abstract

VCSSL Graphics ライブラリ は、VCSSLで描画を扱うための標準ライブラリの一つです。

VCSSLにおける描画関連の標準ライブラリには、Graphics、Graphics2D、Graphics3D ライブラリの 3 つが存在します。
その中で、Graphics ライブラリは描画用リソースの管理機能を提供し、Graphics2D 及び Graphics3D ライブラリは実際の描画機能を提供します。

描画を行うためには、イメージやバッファ、ストリームなどのリソースが必要となります。
いくつかの（恐らく多くの）言語では、これらは独立なオブジェクトとして扱う事が多いですが、VCSSLではこれらを一つにまとめて「 グラフィックスデータ 」として扱います。
つまりVCSSLでは、アニメーションでリアルタイムに3DCGを描画するためのバッファ領域も、画像ファイルから読み込んだ固定的なイメージも、区別せずに「 グラフィックスデータ 」として扱います。

Graphics ライブラリが提供するのは、この「 グラフィックスデータ 」の生成や破棄、入出力、及び初等的な加工などの管理機能です。
例として、画像ファイル「 input.png 」を読み込み、黒色の部分を透明にして「 output.png 」に出力するには、以下のようにします。

int g1 = newGraphics("input.png"); // 画像ファイルからグラフィックスデータ g1 を生成
int g2 = newGraphics(g1, 0,0,0,255, 0,0,0,0); // g1 の黒色を透明にしたグラフィックスデータ g2 を生成
exportGraphics(g2, "output.png", "PNG"); // g2 を画像ファイルに出力
deleteGraphics(g1); // g1 を破棄
deleteGraphics(g2); // g2 を破棄

他にも、ラスタデータ（ピクセル配列）を直接操作して、初歩的な加工や描画などを行う機能が提供されます。
より高度な描画を行うには、Graphics2D 及び Graphics3D ライブラリを併せて使用してください。

## 目次 - Index

int newGraphics()
  グラフィックスデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。この関数で生成したグラフィックスデータは、サイズが0ピクセルのイメージを保持します。
int newGraphics( string filePath )
  グラフィックスデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。この関数で生成したグラフィックスデータは、画像ファイルから読み込んだイメージがあらかじめ描き込まれています。
int newGraphics( int red[ ][ ], int green[ ][ ], int blue[ ][ ], int alpha[ ][ ] )
  グラフィックスデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。この関数で生成したグラフィックスデータは、ピクセル配列から読み込んだイメージがあらかじめ描き込まれています。
int newGraphics( int rgba[ ][ ][ ] )
  グラフィックスデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。この関数で生成したグラフィックスデータは、ピクセル配列から読み込んだイメージがあらかじめ描き込まれています。
int newGraphics( int baseGraphics, int fromRed, int fromGreen, int fromBlue, int fromAlpha, int toRed, int toGreen, int toBlue, int toAlpha )
  グラフィックスデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。この関数で生成したグラフィックスデータは、別のグラフィックスデータの特定色を、別の色に変換したイメージがあらかじめ描き込まれています。
int newGraphics( int baseGraphics, int fromColor[ ], int toColor[ ] )
  グラフィックスデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。この関数で生成したグラフィックスデータは、別のグラフィックスデータの特定色を、別の色に変換したイメージがあらかじめ描き込まれています。
int newGraphics ( int baseGraphics, int width, int height, bool antialiasing )
  グラフィックスデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。この関数で生成したグラフィックスデータは、別のグラフィックスデータを拡大・縮小した内容があらかじめ描き込まれています。
int newGraphics ( int baseGraphics, int cropX, int cropY, int cropWidth, int cropHeight )
  グラフィックスデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。この関数で生成したグラフィックスデータは、別のグラフィックスデータの一部を抜き出した内容があらかじめ描き込まれています。
void deleteGraphics( int id )
  グラフィックスデータを破棄します。
int getGraphicsWidth( int id )
  グラフィックスデータが保持するイメージの幅（ピクセル数）を返します。
int getGraphicsHeight( int id )
  グラフィックスデータが保持するイメージの高さ（ピクセル数）を返します。
void exportGraphics( int id, string name, string format )
  グラフィックスデータが保持するイメージを、画像ファイルに変換して出力します。
void exportGraphics( int id, string name, string format, double quality )
  グラフィックスデータが保持するイメージを、画像ファイルに変換して出力します。
void setGraphicsPixel( int id, int red[ ][ ], int green[ ][ ], int blue[ ][ ], int alpha[ ][ ] )
  グラフィックスデータの保持するイメージを、指定されたピクセル配列で描きかえます。
void setGraphicsPixel( int id, int rgba[ ][ ][ ] )
  グラフィックスデータの保持するイメージを、指定されたピクセル配列で描きかえます。
int[ ][ ][ ] getGraphicsPixel( int id )
  イメージの全ピクセル色成分を格納する配列を返します。
int[ ][ ] getGraphicsPixelRed( int id )
  イメージの全ピクセルについて、赤色成分のみを格納する配列を返します。
int[ ][ ] getGraphicsPixelGreen( int id )
  イメージの全ピクセルについて、緑色成分のみを格納する配列を返します。
int[ ][ ] getGraphicsPixelBlue( int id )
  イメージの全ピクセルについて、青色成分のみを格納する配列を返します。
int[ ][ ] getGraphicsPixelAlpha( int id )
  イメージの全ピクセルについて、α値成分のみを格納する配列を返します。

## 構造体 - Structs

- なし - None -

## 変数 - Variables

- なし - None -

## 関数 - Functions

文法的定義 - Signature | int newGraphics()
関数名 - Name | newGraphics
役割 - Role | グラフィックスデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。 この関数で生成したグラフィックスデータは、サイズが0ピクセルのイメージを保持します。
戻り値 - Return | (int型) 生成したグラフィックスデータに割り振られたグラフィックスデータID（識別番号）。

文法的定義 - Signature | int newGraphics( string filePath )
関数名 - Name | newGraphics
役割 - Role | グラフィックスデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。 この関数で生成したグラフィックスデータは、画像ファイルから読み込んだイメージがあらかじめ描き込まれています。
引数 - Arguments | (string型) filePath : 画像ファイルの名称またはパス。
戻り値 - Return | (int型) 生成したグラフィックスデータに割り振られたグラフィックスデータID（識別番号）。

文法的定義 - Signature | int newGraphics( int red[ ][ ], int green[ ][ ], int blue[ ][ ], int alpha[ ][ ] )
関数名 - Name | newGraphics
役割 - Role | グラフィックスデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。 この関数で生成したグラフィックスデータは、ピクセル配列から読み込んだイメージがあらかじめ描き込まれています。
引数 - Arguments | red[][] : ピクセルの赤色成分（[Y][X]、0 ~ 255）。 green[][] : ピクセルの緑色成分（[Y][X]、0 ~ 255）。 blue[][] : ピクセルの青色成分（[Y][X]、0 ~ 255）。 alpha[][] : ピクセルのα値成分（[Y][X]、0 ~ 255）。
戻り値 - Return | (int型) 生成したグラフィックスデータに割り振られたグラフィックスデータID（識別番号）。

文法的定義 - Signature | int newGraphics( int rgba[ ][ ][ ] )
関数名 - Name | newGraphics
役割 - Role | グラフィックスデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。 この関数で生成したグラフィックスデータは、ピクセル配列から読み込んだイメージがあらかじめ描き込まれています。
引数 - Arguments | rgba[][][] : ピクセルの色成分（[Y][X][色成分インデックス]、色成分インデックスは「0=赤 / 1=緑 / 2=青 / 3=α」、値の範囲は0 ~ 255）。
戻り値 - Return | (int型) 生成したグラフィックスデータに割り振られたグラフィックスデータID（識別番号）。

文法的定義 - Signature | int newGraphics( int baseGraphics, int fromRed, int fromGreen, int fromBlue, int fromAlpha, int toRed, int toGreen, int toBlue, int toAlpha )
関数名 - Name | newGraphics
役割 - Role | グラフィックスデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。 この関数で生成したグラフィックスデータは、別のグラフィックスデータの特定色を、別の色に変換したイメージがあらかじめ描き込まれています。
引数 - Arguments | (int型) baseGraphics : 変換元のイメージを保持するグラフィックスデータのグラフィックスデータID。 (int型) fromRed : 変換対象の色の赤色成分（0 ~ 255）。 (int型) fromGreen : 変換対象の色の青色成分（0 ~ 255）。 (int型) fromBlue : 変換対象の色の緑色成分（0 ~ 255）。 (int型) fromAlpha : 変換対象の色のα値成分（0 ~ 255）。 (int型) toRed : 変換後の色の赤色成分（0 ~ 255）。 (int型) toGreen : 変換後の色の青色成分（0 ~ 255）。 (int型) toBlue : 変換後の色の緑色成分（0 ~ 255）。 (int型) toAlpha : 変換後の色のα値成分（0 ~ 255）。
戻り値 - Return | (int型) 生成したグラフィックスデータに割り振られたグラフィックスデータID（識別番号）。

文法的定義 - Signature | int newGraphics( int baseGraphics, int fromColor[ ], int toColor[ ] )
関数名 - Name | newGraphics
役割 - Role | グラフィックスデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。 この関数で生成したグラフィックスデータは、別のグラフィックスデータの特定色を、別の色に変換したイメージがあらかじめ描き込まれています。
引数 - Arguments | (int型) baseGraphics : 変換元のイメージを保持するグラフィックスデータのID。 (int[]型) fromColor : 変換対象の色の成分を格納する配列。 (int[]型) toColor : 変換後の色の成分を格納する配列。
戻り値 - Return | (int型) 生成したグラフィックスデータに割り振られたグラフィックスデータID（識別番号）。

文法的定義 - Signature | int newGraphics ( int baseGraphics, int width, int height, bool antialiasing )
関数名 - Name | newGraphics
役割 - Role | グラフィックスデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。 この関数で生成したグラフィックスデータは、別のグラフィックスデータを拡大・縮小した内容があらかじめ描き込まれています。
引数 - Arguments | (int型) baseGraphics : 元のイメージを保持するグラフィックスデータのID。 (int型) width : 生成するグラフィックスデータの幅（元のイメージをこの幅に拡大・縮小） (int型) height : 生成するグラフィックスデータの高さ（元のイメージをこの高さに拡大・縮小） (bool型) antialiasing : 拡大・縮小結果を滑らかにするかどうか。true を指定すると滑らかになりますが、処理時間が増加します。
戻り値 - Return | (int型) 生成したグラフィックスデータに割り振られたグラフィックスデータID（識別番号）。

文法的定義 - Signature | int newGraphics ( int baseGraphics, int cropX, int cropY, int cropWidth, int cropHeight )
関数名 - Name | newGraphics
役割 - Role | グラフィックスデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。 この関数で生成したグラフィックスデータは、別のグラフィックスデータの一部を抜き出した内容があらかじめ描き込まれています。
引数 - Arguments | (int型) baseGraphics : 元のイメージを保持するグラフィックスデータのID。 (int型) cropX : 元の画像から抜き出す領域の左上頂点X座標 (int型) cropY : 元の画像から抜き出す領域の左上頂点Y座標 (int型) cropWidth : 元の画像から抜き出す領域の幅 (int型) cropHeight : 元の画像から抜き出す領域の高さ
戻り値 - Return | (int型) 生成したグラフィックスデータに割り振られたグラフィックスデータID（識別番号）。

文法的定義 - Signature | void deleteGraphics( int id )
関数名 - Name | deleteGraphics
役割 - Role | グラフィックスデータを破棄します。
引数 - Arguments | (int型) id : 対象グラフィックスデータのID。
戻り値 - Return | (void型)

文法的定義 - Signature | int getGraphicsWidth( int id )
関数名 - Name | getGraphicsWidth
役割 - Role | グラフィックスデータが保持するイメージの幅（ピクセル数）を返します。
引数 - Arguments | (int型) id : 対象グラフィックスデータのID。 対象グラフィックスデータの幅（ピクセル数）。 :
戻り値 - Return | (int型)

文法的定義 - Signature | int getGraphicsHeight( int id )
関数名 - Name | getGraphicsHeight
役割 - Role | グラフィックスデータが保持するイメージの高さ（ピクセル数）を返します。
引数 - Arguments | (int型) id : 対象グラフィックスデータのID。 対象グラフィックスデータの高さ（ピクセル数）。 :
戻り値 - Return | (int型)

文法的定義 - Signature | void exportGraphics( int id, string name, string format )
関数名 - Name | exportGraphics
役割 - Role | グラフィックスデータが保持するイメージを、画像ファイルに変換して出力します。
引数 - Arguments | (int型) id : 対象グラフィックスデータのID。 (string型) name : 出力ファイル名。 (string型) format : 出力ファイルの形式。"JPEG" または "PNG"、もしくは "BMP" を指定します。
戻り値 - Return | (void型)

文法的定義 - Signature | void exportGraphics( int id, string name, string format, double quality )
関数名 - Name | exportGraphics
役割 - Role | グラフィックスデータが保持するイメージを、画像ファイルに変換して出力します。
引数 - Arguments | (int型) id : 対象グラフィックスデータのID。 (string型) name : 出力ファイル名。 (string型) format : 出力ファイルの形式。"JPEG" または "PNG"、もしくは "BMP" を指定します。 (double型) quality : 画質（0.0 ~ 100.0）。JPEG の場合に有効です。大きいほど高画質です。
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraphicsPixel( int id, int red[ ][ ], int green[ ][ ], int blue[ ][ ], int alpha[ ][ ] )
関数名 - Name | setGraphicsPixel
役割 - Role | グラフィックスデータの保持するイメージを、指定されたピクセル配列で描きかえます。
引数 - Arguments | (int型) id : 対象グラフィックスデータのID。 red[][] : ピクセルの赤色成分（[Y][X]、0 ~ 255）。 green[][] : ピクセルの緑色成分（[Y][X]、0 ~ 255）。 blue[][] : ピクセルの青色成分（[Y][X]、0 ~ 255）。 alpha[][] : ピクセルのα値成分（[Y][X]、0 ~ 255）。
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraphicsPixel( int id, int rgba[ ][ ][ ] )
関数名 - Name | setGraphicsPixel
役割 - Role | グラフィックスデータの保持するイメージを、指定されたピクセル配列で描きかえます。
引数 - Arguments | (int型) id : 対象グラフィックスデータのID。 rgba[][][] : ピクセルの色成分（[Y][X][色成分インデックス]、色成分インデックスは「0=赤 / 1=緑 / 2=青 / 3=α」、値の範囲は0 ~ 255）。
戻り値 - Return | (void型)

文法的定義 - Signature | int[ ][ ][ ] getGraphicsPixel( int id )
関数名 - Name | getGraphicsPixel
役割 - Role | イメージの全ピクセル色成分を格納する配列を返します。
引数 - Arguments | (int型) id : 対象グラフィックスデータのID。
戻り値 - Return | (int[][][]型) ピクセルの色成分（[Y][X][色成分インデックス]、色成分インデックスは「0=赤 / 1=緑 / 2=青 / 3=α」、値の範囲は0 ~ 255）。

文法的定義 - Signature | int[ ][ ] getGraphicsPixelRed( int id )
関数名 - Name | getGraphicsPixelRed
役割 - Role | イメージの全ピクセルについて、赤色成分のみを格納する配列を返します。
引数 - Arguments | (int型) id : 対象グラフィックスデータのID。
戻り値 - Return | (int[][]型) ピクセルの赤色成分（[Y][X]、値の範囲は0 ~ 255）。

文法的定義 - Signature | int[ ][ ] getGraphicsPixelGreen( int id )
関数名 - Name | getGraphicsPixelGreen
役割 - Role | イメージの全ピクセルについて、緑色成分のみを格納する配列を返します。
引数 - Arguments | (int型) id : 対象グラフィックスデータのID。
戻り値 - Return | (int[][]型) ピクセルの緑色成分（[Y][X]、値の範囲は0 ~ 255）。

文法的定義 - Signature | int[ ][ ] getGraphicsPixelBlue( int id )
関数名 - Name | getGraphicsPixelBlue
役割 - Role | イメージの全ピクセルについて、青色成分のみを格納する配列を返します。
引数 - Arguments | (int型) id : 対象グラフィックスデータのID。
戻り値 - Return | (int[][]型) ピクセルの青色成分（[Y][X]、値の範囲は0 ~ 255）。

文法的定義 - Signature | int[ ][ ] getGraphicsPixelAlpha( int id )
関数名 - Name | getGraphicsPixelAlpha
役割 - Role | イメージの全ピクセルについて、α値成分のみを格納する配列を返します。
引数 - Arguments | (int型) id : 対象グラフィックスデータのID。
戻り値 - Return | (int[][]型) ピクセルのα値成分（[Y][X]、値の範囲は0 ~ 255）。