1.2.1 Data Types and Variables
ANSI C Data Types
Origin C supports all the ANSI C data typesData Types: charchar Type, shortshort Type, intInteger Type, floatfloat Type, doubledouble Type and voidvoid Return Type. In addition, you can have an array of, and a pointerPointer to, each of these data types.
char name[50]; // Declare an array of characters
unsigned char age; // Declare an unsigned 8-bit integer
unsigned short year; // Declare an unsigned 16-bit integer
Origin C Composite Data Types
Array, One-DimensionalArray, Two-DimensionalsAlthough the C syntax for declaring an array is supported, Origin C provides stringstring, vectorvector and matrixmatrix classes to simplify working with data types in one or two dimensional arrays. These data types include char, byte, short, word, int, uint, complex. A vector can be of type string for a string arrayString Array, but a matrix cannot. A matrix can be of numerical types only.
string str = "hello, world\n"; // Declare and initialize a string
vector<double> vA1 = {1.5, 1.8, 1.1}; // Declare and initialize doubles
vector vA2 = {2.5, 2.8, 2.1, 2.4};
vector<string> vs(3); // Declare a string array
vs[0] = "This "; // Assign string to each string array item
vs[1] = "is ";
vs[2] = "test";
matrix<int> mA1; // Declare a matrix of integers
matrix mA2; // Declare a matrix of doubles
// NOTE: The double data type is implied when a data type is not
// specified in the declaration of vector and matrix variables.
Another useful class provided by Origin C is the complex class. The complex class supports numeric data containing both a realComplex, Real Component and an imaginaryComplex, Imaginary Component component.
complex cc(4.5, 7.8); // Declare a complex value.
// The real component is set to 4.5 and
// the imaginary component is set to 7.8
out_complex("value = ", cc); // Output the complex value
Color
Colors in Origin C are represented with a DWORD value. These values can be an index into Origin's internal color paletteColor Palette or an actual color composed of red, green, and blue components.
Palette Index
Origin's internal Palette contains 24 colors. An index into Origin's internal color palette is a zero based value from 0 to 23. Origin C provides named constants for each of these colors. Each name begins with the prefix SYSCOLOR_ followed by the name of the color. The following table lists the 24 color names and their indices.
Index
|
Name
|
Index
|
Name
|
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;
Auto ColorColor, Auto Color
There is a special color index referred to as Auto. When this index is used the element will be colored using the same color as its parent. Not all elements support the Auto index. See Origin's graphical user interface for the element to determine if the Auto index is supported.
The INDEX_COLOR_AUTOMATIC macro is used when the Auto index value is needed.
DWORD dwColor = INDEX_COLOR_AUTOMATIC;
RGB
An Origin color value can also represent an RGB value. RGB values are made up of 8-bit red, green, and blue components. These values can easily be made using the RGB macro}.
DWORD brown = RGB(139,69,19); // saddle brown
Color, Convert RGB to Origin ColorThe values returned from the RGB macro cannot be directly used as Origin color values. You will need to use the RGB2OCOLOR macro to convert the RGB values to Origin color values.
DWORD brown = RGB2OCOLOR(RGB(139,69,19)); // saddle brown
Color, Check as RGB Value or Palette IndexIf you ever need to know whether an Origin color value represents an RGB value or an index into a palette then you can use the OCOLOR_IS_RGB macro. This macro returns true if the value represents an RGB value and returns false otherwise.
if( OCOLOR_IS_RGB(ocolor) )
out_str("color value represents an RGB color");
else
out_str("color value represents a color index");
Color, Extract Single Color from RGBOnce you determine that an Origin color value represents an RGB value, then you can use the GET_CRF_FROM_RGBOCOLOR macro to extract the RGB value from the Origin color value.
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));
}
|