データ型と変数


ANSI C データ型

Origin Cは、char, short, int, float, double, void型などのすべてのANSI Cデータ型をサポートしています。 さらに、これらのデータ型のそれぞれを配列にすることができ、ポインタで指定することもできます。

char name[50];       // 文字列の配列を宣言
unsigned char age;   // 符号無し8ビット整数型を宣言
unsigned short year; // 符号無し16ビット整数型を宣言

Origin Cの合成データ型

配列を宣言するCシンタックスがサポートされていますが、Origin Cは1次元または2次元配列のデータタイプの操作を簡単にする string, vector, matrix クラスを提供しています。これらのデータ型は、char, byte, short, word, int, uint, complexを含みます。ベクター型は、文字列配列の型にできますが、行列はできません。行列は数値型のみにすることができます。 行列は数値型のみにすることができます。

string str = "hello, world\n";        // 文字列を宣言し、初期化

vector<double> vA1 = {1.5, 1.8, 1.1}; // double型の宣言と初期化
vector vA2 = {2.5, 2.8, 2.1, 2.4};    

vector<string> vs(3);                 // 文字列配列を宣言
vs[0] = "This ";                      // 文字列を各文字列配列の項目に割り当て
vs[1] = "is ";
vs[2] = "test";                                    

matrix<int> mA1;                      // 整数の行列を宣言
matrix mA2;                           // double型の行列を宣言

// NOTE: NOTE: double型は、データ型が、ベクターおよび行列変数の
// 宣言で指定されていないときに、暗黙に使われます。

Origin Cで提供される別の役立つクラスは、complex クラスです。 complexクラスは、実数と虚数の両方を含む数値データ型をサポートします。

complex cc(4.5, 7.8);        // 複素数値を宣言
                             // 実数コンポーネントは4.5にセットされ
                             // 虚数のコンポーネントは7.8にセット
out_complex("value = ", cc); // 出力は複素数値

Origin Cの色は、DWORD値で表されます。 これらの値は、Originの内部カラーパレットへのインデックスにしたり、実際にRGB値を混合することができます。

パレットのインデックス

Originの内部のパレットは24色含んでいます。 Originの内部のカラーパレットへのインデックスは0から23までの値です。 Origin Cは、これらの値に固定の名前を提供しています。 それぞれの名前は、プレフィックスSYSCOLOR_ に色の名前を続けます。 次の表は、24色の名前とインデックスを示しています。

インデックス 名前 インデックス 名前
0 SYSCOLOR_BLACK 12 SYSCOLOR_DKCYAN
1 SYSCOLOR_RED 13 SYSCOLOR_ROYAL
2 SYSCOLOR_GREEN 14 SYSCOLOR_ORANGE
3 SYSCOLOR_BLUE 15 SYSCOLOR_VIOLET
4 SYSCOLOR_CYAN 16 SYSCOLOR_PINK
5 SYSCOLOR_MAGENTA 17 SYSCOLOR_WHITE
6 SYSCOLOR_YELLOW 18 SYSCOLOR_LTGRAY
7 SYSCOLOR_DKYELLOW 19 SYSCOLOR_GRAY
8 SYSCOLOR_NAVY 20 SYSCOLOR_LTYELLOW
9 SYSCOLOR_PURPLE 21 SYSCOLOR_LTCYAN
10 SYSCOLOR_WINE 22 SYSCOLOR_LTMAGENTA
11 SYSCOLOR_OLIVE 23 SYSCOLOR_DKGRAY


DWORD dwColor = SYSCOLOR_ORANGE;

自動カラー

自動として参照される特別なカラーインデックスがあります。 このインデックスが使われると、要素はその親と同じ色で色付けされます。 すべての要素が自動インデックスをサポートしているわけではありません。 要素に対するOriginのグラフィカルユーザインターフェースを見て、自動インデックスがサポートされているかどうかを決定します。

INDEX_COLOR_AUTOMATIC マクロは、自動インデックス値が必要なときに使用します。

DWORD dwColor = INDEX_COLOR_AUTOMATIC;

RGB

Originの色の値は、RGB値を表すこともできます。 RGB値は、8ビットの赤、緑、青の成分で構成されます。 これらの値は、RGB マクロを使って簡単に行うことができます。

DWORD brown = RGB(139,69,19); // 茶色

RGBマクロから返される値は、Originの色の値として直接使うことができません。 RGB2OCOLORマクロを使って、RGB値をOriginの色の値に変換する必要があります。

DWORD brown = RGB2OCOLOR(RGB(139,69,19)); // 茶色

Originの色値がRGB値を表しているのか、パレット内のインデックスを表しているのかを知る必要がある場合、OCOLOR_IS_RGBマクロを使うことができます。 値がRGB値を表す場合、このマクロはTrueを返し、それ以外の場合Falseを返します。

if( OCOLOR_IS_RGB(ocolor) )
    out_str("color value represents an RGB color");
else
    out_str("color value represents a color index");

Originの色の値がRGB値を表すことが分かったら、GET_CRF_FROM_RGBOCOLOR マクロを使って、Originの色の値からRGB値を抽出することができます。

if( OCOLOR_IS_RGB(ocolor) )
{
    DWORD rgb = GET_CRF_FROM_RGBOCOLOR(ocolor);
    printf("red = %d, green = %d, blue = %d\n",
        GetRValue(rgb), GetGValue(rgb), GetBValue(rgb));
}