# Graph2D

## 概要 - Abstract

tool.Graph2D APIライブラリ（以下、Graph2Dライブラリ）は、2次元グラフソフトウェアを制御するためのライブラリです。

Graph2D ライブラリは拡張ライブラリであり、VCSSLの言語仕様における標準ライブラリには含まれていません。従って、全てのVCSSL処理系において、必ずしもGraph2D ライブラリの実装がサポートされるわけではありません。

Graph2D ライブラリの仕様は、広く一般的な2次元グラフソフトウェアをVCSSLから制御する事を想定して定義されており、特定の2次元グラフソフトウェアを前提としたものではありません。 Graph2D ライブラリの実装において、制御対象にどのような2次元グラフソフトウェアが採用されるかは処理系依存であり、処理系の開発元（ベンダー）、バージョン、またはグラフソフトウェアとの通信機能を提供するプラグインなどに依存します。このような事情があるため、Graph2D ライブラリが提供する各種関数も、異なる処理系に関しては、厳密に同一の挙動を期待すべきではありません。

また、同一の処理系であっても、Graph2D ライブラリは標準ライブラリでは無いため、その実装において、恒久的に同様の挙動が保証されるものではありません。Graph2D ライブラリの実装は、あくまで処理系が独自にサポートする拡張機能であるという点に留意しておく必要があります。例えば、グラフソフトウェアの大幅なアップデートが行われると、 それに伴い、Graph2D ライブラリの挙動も微妙に変化してしまうケースなどが考えられます。

RINEARN VCSSLランタイム、及びそれを搭載するVCSSL対応ソフトウェア（リニアンプロセッサーなど）では、Graph2D ライブラリをサポートしており、その実装には科学技術分野用グラフソフトウェア「 リニアングラフ2D 」を採用しています。リニアングラフ2D本体（ RinearnGraph2D.jar ）はVCSSLランタイムの配布パッケージ内に同梱されているため、別途何かを用意する必要はありません。

## 目次 - Index

int newGraph2D()
  2次元グラフをデフォルトのサイズで生成し、それに固有の識別番号 ( グラフID ) を割り振って返します。
int newGraph2D( int x, int y, int width, int height, string title )
  2次元グラフを指定されたサイズで生成し、それに固有の識別番号 ( グラフID ) を割り振って返します。
int getGraph2D()
  処理系で起動・確保されている特別なグラフがあれば、そのグラフIDを取得します。無ければ新規生成します。
void deleteGraph2D( int graphID )
  グラフを破棄します。
void clearGraph2D( int graphID )
  グラフの内容をクリアします。
int getGraph2DGraphics( int graphID )
  グラフの保持している描画内容を、Graphicsライブラリ互換のグラフィックスデータに変換します。変換されたグラフィックスデータは、2D/3Dレンダラ―などで加工できます。
void setGraph2DLocation( int graphID, int x, int y )
  グラフウィンドウの位置を設定します。
void setGraph2DSize( int graphID, int width, int height )
  グラフウィンドウの大きさを設定します。
void hideGraph2D( int graphID )
  グラフウィンドウを不可視化します。
void showGraph2D( int graphID )
  グラフウィンドウを可視化します。
void setGraph2DFile( int graphID, string filePath )
  ファイルを読み込み、グラフにプロットします。
void setGraph2DFile( int graphID, string file[ ] )
  複数のファイルを読み込み、グラフにプロットします。
void setGraph2DData( int graphID, string data )
  ファイルの内容と同じ書式で記載されたテキストを読み込み、グラフにプロットします。
void setGraph2DData( int graphID, float dataX[ ], float dataY[ ] )
  座標値を格納する float 型配列を読み込み、グラフにプロットします。
void setGraph2DData( int graphID, float dataX[ ][ ], float dataY[ ][ ] )
  座標値を格納する float 型配列を読み込み、グラフにプロットします。
void addGraph2DData( int graphID, float dataX[ ], float dataY[ ] )
  座標値を格納する float 型配列を読み込み、グラフに追記プロットします。
void addGraph2DData( int graphID, float dataX[ ][ ], float dataY[ ][ ] )
  座標値を格納する float 型配列を読み込み、グラフに追記プロットします。
void setGraph2DConfigurationFile( int graphID, string file )
  設定ファイルを読み込み、グラフに自動で設定を行います。
void setGraph2DConfigurationCode( int graphID, string code )
  設定ファイルと同様の書式で記載されたコード（設定コード）を読み込み、グラフに自動で設定を行います。
void setGraph2DRange( int graphID, double xMin, double xMax, double yMin, double yMax )
  プロット範囲を設定します。
void setGraph2DRangeX( int graphID, double xMin, double xMax )
  X軸のプロット範囲を設定します。
void setGraph2DRangeY( int graphID, double yMin, double yMax )
  Y軸のプロット範囲を設定します。
void setGraph2DAutoRange( int graphID, bool autoX, bool autoY )
  プロット範囲の自動調整機能を有効化または無効化します。
void setGraph2DLabel( int graphID, string xLabel, string yLabel )
  各軸のラベルを設定します。
void setGraph2DLabelX( int graphID, string label )
  X軸のラベルを設定します。
void setGraph2DLabelY( int graphID, string label )
  Y軸のラベルを設定します。
void setGraph2DTick( int graphID, double xTickCoords[ ], string xTickLabels[ ], double yTickCoords[ ], string yTickLabels[ ] )
  各軸の目盛りを設定します。
void setGraph2DTickX( int graphID, double tickCoords[ ], string tickLabels[ ] )
  X軸の目盛りを設定します。
void setGraph2DTickY( int graphID, double tickCoords[ ], string tickLabels[ ] )
  Y軸の目盛りを設定します。
void setGraph2DOption( int graphID, string option, bool value )
  グラフのオプション項目を設定します。項目名は処理系に依存します。代表的なオプション項目名は以下の通りです： WITH_POINTS : 点プロット , WITH_LINES : 線プロット , WITH_DOTS : ドットプロット , WITH_GRID_LINE : グリッドライン描画 , LOG_X : X対数軸表示 , LOG_Y : Y対数軸表示 , REVERSE_X : X軸反転表示 , REVERSE_Y : Y軸反転表示 ,
void setGraph2DMenu( int graphID, string menu, string value )
  ※ この関数の用途は、事実上ラベル設定専用であり、現在は setGraph2DLabel 関数やsetGraph2DLabelX/Y 関数などで代替可能です。そちらの方が可読性が高いため、特に事情が無ければ、今後はそちらを用いる事が推奨されます。グラフのメニュー項目を設定します。項目名は処理系に依存します。
void setGraph2DAnimation( int graphID, string mode, bool state )
  グラフのアニメーションを有効化または無効化します。利用可能なアニメーションモードは処理系に依存します。代表的なアニメーションモードは以下の通りです： TRACE : 点をアニメーションし、軌跡を残す , INDEX : 点をアニメーションする , INDEX-SERIES : 系列をアニメーションする ,
void setGraph2DTitle( int graphID, string title )
  グラフのタイトルを設定します。
void setGraph2DLabel( int graphID, string xLabel, string yLabel )
  グラフの軸ラベルを設定します。
void setGraph2DLegend( int graphID, string legend[ ] )
  グラフの凡例を設定します。
void exportGraph2D( int graphID, string filename, string format )
  グラフを画像に出力します。
void exportGraph2D( int graphID, string filename, string format, float quality )
  グラフを画像に出力します。
void onGraph2DClose( int graphID )
  グラフウィンドウが閉じられた際にコールされます。

## 構造体 - Structs

- なし - None -

## 変数 - Variables

- なし - None -

## 関数 - Functions

文法的定義 - Signature | int newGraph2D()
関数名 - Name | newGraph2D
役割 - Role | 2次元グラフをデフォルトのサイズで生成し、それに固有の識別番号 ( グラフID ) を割り振って返します。
戻り値 - Return | (int型) 生成したグラフのID

文法的定義 - Signature | int newGraph2D( int x, int y, int width, int height, string title )
関数名 - Name | newGraph2D
役割 - Role | 2次元グラフを指定されたサイズで生成し、それに固有の識別番号 ( グラフID ) を割り振って返します。
引数 - Arguments | (int型) x : グラフウィンドウ左上頂点のX座標 (int型) y : グラフウィンドウ左上頂点のY座標 (int型) width : グラフウィンドウの幅 (int型) height : グラフウィンドウの高さ (string型) title : グラフウィンドウタイトル
戻り値 - Return | (int型) 生成したグラフのID

文法的定義 - Signature | int getGraph2D()
関数名 - Name | getGraph2D
役割 - Role | 処理系で起動・確保されている特別なグラフがあれば、そのグラフIDを取得します。無ければ新規生成します。
戻り値 - Return | (int型) 取得または生成したグラフID

文法的定義 - Signature | void deleteGraph2D( int graphID )
関数名 - Name | deleteGraph2D
役割 - Role | グラフを破棄します。
引数 - Arguments | (int型) graphID : 対象グラフのID
戻り値 - Return | (void型)

文法的定義 - Signature | void clearGraph2D( int graphID )
関数名 - Name | clearGraph2D
役割 - Role | グラフの内容をクリアします。
引数 - Arguments | (int型) graphID : 対象グラフのID
戻り値 - Return | (void型)

文法的定義 - Signature | int getGraph2DGraphics( int graphID )
関数名 - Name | getGraph2DGraphics
役割 - Role | グラフの保持している描画内容を、Graphicsライブラリ互換のグラフィックスデータに変換します。変換されたグラフィックスデータは、2D/3Dレンダラ―などで加工できます。
引数 - Arguments | (int型) graphID : 対象グラフのID
戻り値 - Return | (int型) グラフィックスデータID

文法的定義 - Signature | void setGraph2DLocation( int graphID, int x, int y )
関数名 - Name | setGraph2DLocation
役割 - Role | グラフウィンドウの位置を設定します。
引数 - Arguments | (int型) graphID : 対象グラフのID (int型) x : グラフウィンドウ左上頂点のX座標 (int型) y : グラフウィンドウ左上頂点のY座標
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DSize( int graphID, int width, int height )
関数名 - Name | setGraph2DSize
役割 - Role | グラフウィンドウの大きさを設定します。
引数 - Arguments | (int型) graphID : 対象グラフのID (int型) width : グラフウィンドウの幅 (int型) height : グラフウィンドウ高さ
戻り値 - Return | (void型)

文法的定義 - Signature | void hideGraph2D( int graphID )
関数名 - Name | hideGraph2D
役割 - Role | グラフウィンドウを不可視化します。
引数 - Arguments | (int型) graphID : 対象グラフのID
戻り値 - Return | (void型)

文法的定義 - Signature | void showGraph2D( int graphID )
関数名 - Name | showGraph2D
役割 - Role | グラフウィンドウを可視化します。
引数 - Arguments | (int型) graphID : 対象グラフのID
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DFile( int graphID, string filePath )
関数名 - Name | setGraph2DFile
役割 - Role | ファイルを読み込み、グラフにプロットします。
引数 - Arguments | (int型) graphID : 対象グラフのID (string型) filePath : プロットするファイルのファイル名またはパス
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DFile( int graphID, string file[ ] )
関数名 - Name | setGraph2DFile
役割 - Role | 複数のファイルを読み込み、グラフにプロットします。
引数 - Arguments | (int型) graphID : 対象グラフのID (string[]型) file : プロットするファイルのファイル名またはパス
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DData( int graphID, string data )
関数名 - Name | setGraph2DData
役割 - Role | ファイルの内容と同じ書式で記載されたテキストを読み込み、グラフにプロットします。
引数 - Arguments | (int型) graphID : 対象グラフのID (string型) data : ファイルの内容と同じ書式で記載されたテキスト
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DData( int graphID, float dataX[ ], float dataY[ ] )
関数名 - Name | setGraph2DData
役割 - Role | 座標値を格納する float 型配列を読み込み、グラフにプロットします。
引数 - Arguments | (int型) graphID : 対象グラフのID (float[]型) dataX : X座標を格納する配列（ [ 点インデックス ] ） (float[]型) dataY : Y座標を格納する配列（ [ 点インデックス ] ）
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DData( int graphID, float dataX[ ][ ], float dataY[ ][ ] )
関数名 - Name | setGraph2DData
役割 - Role | 座標値を格納する float 型配列を読み込み、グラフにプロットします。
引数 - Arguments | (int型) graphID : 対象グラフのID (float[][]型) dataX : X座標を格納する配列（ [ 系列インデックス ][ 点インデックス ] ） (float[][]型) dataY : Y座標を格納する配列（ [ 系列インデックス ][ 点インデックス ] ）
戻り値 - Return | (void型)

文法的定義 - Signature | void addGraph2DData( int graphID, float dataX[ ], float dataY[ ] )
関数名 - Name | addGraph2DData
役割 - Role | 座標値を格納する float 型配列を読み込み、グラフに追記プロットします。
引数 - Arguments | (int型) graphID : 対象グラフのID (float[]型) dataX : X座標を格納する配列（ [ 点インデックス ] ） (float[]型) dataY : Y座標を格納する配列（ [ 点インデックス ] ）
戻り値 - Return | (void型)

文法的定義 - Signature | void addGraph2DData( int graphID, float dataX[ ][ ], float dataY[ ][ ] )
関数名 - Name | addGraph2DData
役割 - Role | 座標値を格納する float 型配列を読み込み、グラフに追記プロットします。
引数 - Arguments | (int型) graphID : 対象グラフのID (float[][]型) dataX : X座標を格納する配列（ [ 系列インデックス ][ 点インデックス ] ） (float[][]型) dataY : Y座標を格納する配列（ [ 系列インデックス ][ 点インデックス ] ）
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DConfigurationFile( int graphID, string file )
関数名 - Name | setGraph2DConfigurationFile
役割 - Role | 設定ファイルを読み込み、グラフに自動で設定を行います。
引数 - Arguments | (int型) graphID : 対象グラフのID (string型) file : 設定ファイルのファイル名またはパス
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DConfigurationCode( int graphID, string code )
関数名 - Name | setGraph2DConfigurationCode
役割 - Role | 設定ファイルと同様の書式で記載されたコード（設定コード）を読み込み、グラフに自動で設定を行います。
引数 - Arguments | (int型) graphID : 対象グラフのID line : 設定コードの内容
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DRange( int graphID, double xMin, double xMax, double yMin, double yMax )
関数名 - Name | setGraph2DRange
役割 - Role | プロット範囲を設定します。
引数 - Arguments | (int型) graphID : 対象グラフのID (double型) xMin : X軸の最小値 (double型) xMax : X軸の最大値 (double型) yMin : Y軸の最小値 (double型) yMax : Y軸の最大値
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DRangeX( int graphID, double xMin, double xMax )
関数名 - Name | setGraph2DRangeX
役割 - Role | X軸のプロット範囲を設定します。
引数 - Arguments | (int型) graphID : 対象グラフのID (double型) xMin : X軸の最小値 (double型) xMax : X軸の最大値
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DRangeY( int graphID, double yMin, double yMax )
関数名 - Name | setGraph2DRangeY
役割 - Role | Y軸のプロット範囲を設定します。
引数 - Arguments | (int型) graphID : 対象グラフのID (double型) yMin : Y軸の最小値 (double型) yMax : Y軸の最大値
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DAutoRange( int graphID, bool autoX, bool autoY )
関数名 - Name | setGraph2DAutoRange
役割 - Role | プロット範囲の自動調整機能を有効化または無効化します。
引数 - Arguments | (int型) graphID : 対象グラフのID (bool型) autoX : X軸方向の自動調性機能を有効にするならtrue、無効にするならfalse (bool型) autoY : Y軸方向の自動調性機能を有効にするならtrue、無効にするならfalse
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DLabel( int graphID, string xLabel, string yLabel )
関数名 - Name | setGraph2DLabel
役割 - Role | 各軸のラベルを設定します。
引数 - Arguments | (int型) graphID : 対象グラフのID (string型) xLabel : X軸のラベル (string型) yLabel : Y軸のラベル
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DLabelX( int graphID, string label )
関数名 - Name | setGraph2DLabelX
役割 - Role | X軸のラベルを設定します。
引数 - Arguments | (int型) graphID : 対象グラフのID (string型) label : X軸のラベル
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DLabelY( int graphID, string label )
関数名 - Name | setGraph2DLabelY
役割 - Role | Y軸のラベルを設定します。
引数 - Arguments | (int型) graphID : 対象グラフのID (string型) label : Y軸のラベル
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DTick( int graphID, double xTickCoords[ ], string xTickLabels[ ], double yTickCoords[ ], string yTickLabels[ ] )
関数名 - Name | setGraph2DTick
役割 - Role | 各軸の目盛りを設定します。
引数 - Arguments | (int型) graphID : 対象グラフのID (double[]型) xTickCoords : X軸の目盛り刻み位置の座標値 (string[]型) xTickLabels : X軸の目盛りのラベル (double[]型) yTickCoords : Y軸の目盛り刻み位置の座標値 (string[]型) yTickLabels : Y軸の目盛りのラベル
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DTickX( int graphID, double tickCoords[ ], string tickLabels[ ] )
関数名 - Name | setGraph2DTickX
役割 - Role | X軸の目盛りを設定します。
引数 - Arguments | (int型) graphID : 対象グラフのID (double[]型) tickCoords : 目盛り刻み位置の座標値 (string[]型) tickLabels : 目盛りのラベル
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DTickY( int graphID, double tickCoords[ ], string tickLabels[ ] )
関数名 - Name | setGraph2DTickY
役割 - Role | Y軸の目盛りを設定します。
引数 - Arguments | (int型) graphID : 対象グラフのID (double[]型) tickCoords : 目盛り刻み位置の座標値 (string[]型) tickLabels : 目盛りのラベル
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DOption( int graphID, string option, bool value )
関数名 - Name | setGraph2DOption
役割 - Role | グラフのオプション項目を設定します。項目名は処理系に依存します。代表的なオプション項目名は以下の通りです： WITH_POINTS 点プロット WITH_LINES 線プロット WITH_DOTS ドットプロット WITH_GRID_LINE グリッドライン描画 LOG_X X対数軸表示 LOG_Y Y対数軸表示 REVERSE_X X軸反転表示 REVERSE_Y Y軸反転表示
引数 - Arguments | (int型) graphID : 対象グラフのID (string型) option : オプション項目名 (bool型) value : オプションを有効にするならtrue、無効にするにはfalse
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DMenu( int graphID, string menu, string value )
関数名 - Name | setGraph2DMenu
役割 - Role | ※ この関数の用途は、事実上ラベル設定専用であり、現在は setGraph2DLabel 関数やsetGraph2DLabelX/Y 関数などで代替可能です。そちらの方が可読性が高いため、特に事情が無ければ、今後はそちらを用いる事が推奨されます。 グラフのメニュー項目を設定します。項目名は処理系に依存します。
引数 - Arguments | (int型) graphID : 対象グラフのID option : メニュー項目名 (string型) value : メニュー項目を有効にするならtrue、無効にするにはfalse
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DAnimation( int graphID, string mode, bool state )
関数名 - Name | setGraph2DAnimation
役割 - Role | グラフのアニメーションを有効化または無効化します。利用可能なアニメーションモードは処理系に依存します。代表的なアニメーションモードは以下の通りです： TRACE 点をアニメーションし、軌跡を残す INDEX 点をアニメーションする INDEX-SERIES 系列をアニメーションする
引数 - Arguments | (int型) graphID : 対象グラフのID (string型) mode : アニメーションモード (bool型) state : アニメーションを有効化するならtrue、無効化するならfalse
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DTitle( int graphID, string title )
関数名 - Name | setGraph2DTitle
役割 - Role | グラフのタイトルを設定します。
引数 - Arguments | (int型) graphID : 対象グラフのID (string型) title : タイトル
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DLabel( int graphID, string xLabel, string yLabel )
関数名 - Name | setGraph2DLabel
役割 - Role | グラフの軸ラベルを設定します。
引数 - Arguments | (int型) graphID : 対象グラフのID (string型) xLabel : X軸のラベル (string型) yLabel : Y軸のラベル
戻り値 - Return | (void型)

文法的定義 - Signature | void setGraph2DLegend( int graphID, string legend[ ] )
関数名 - Name | setGraph2DLegend
役割 - Role | グラフの凡例を設定します。
引数 - Arguments | (int型) graphID : 対象グラフのID (string[]型) legend : 凡例を格納する配列（ [ 系列インデックス ] ）
戻り値 - Return | (void型)

文法的定義 - Signature | void exportGraph2D( int graphID, string filename, string format )
関数名 - Name | exportGraph2D
役割 - Role | グラフを画像に出力します。
引数 - Arguments | (int型) graphID : 対象グラフのID (string型) filename : 出力ファイル名またはパス 形式（ : "PNG" または "JPEG" ）
戻り値 - Return | (void型)

文法的定義 - Signature | void exportGraph2D( int graphID, string filename, string format, float quality )
関数名 - Name | exportGraph2D
役割 - Role | グラフを画像に出力します。
引数 - Arguments | (int型) graphID : 対象グラフのID (string型) filename : 出力ファイル名またはパス 形式（ : "PNG" または "JPEG" ） (float型) quality : 品質（ 0.0 ~ 100.0 ）
戻り値 - Return | (void型)

## イベントハンドラ - Event Handler

文法的定義 - Signature | void onGraph2DClose( int graphID )
関数名 - Name | onGraph2DClose
役割 - Role | グラフウィンドウが閉じられた際にコールされます。
引数 - Arguments | (int型) graphID : イベント発生元グラフのID
戻り値 - Return | (void型)