r3dtype
real/dtype/r3dtype.h
r3dtype
Datatype Class. Datatype is an object containing widthheight items of rectangulary organized data.
r3Root
R3CLID_ROOT
r3Datatype
R3CLID_DATATYPE - 201
BEGIN, END, SETROWBYTE, SETROWWORD, SETROWINTEGER, SETROWFLOAT, SETROWRAW, GETROWBYTE, GETROWWORD, GETROWINTEGER, GETROWFLOAT, GETROWRAW, GETPIXELFLOAT, SETPIXELFLOAT, GETCHANNELHANDLE, FREECHANNELHANDLE, VECTORIZE, SETROW,
Data, SubCount, ChannelType, NormValue, Width, Height, TotalWidth, TotalHeight, OffsetX, OffsetY, BaseX, BaseY, Signed, UserData,
int R3RegisterDatatypeClass(R3APP *app);
R3DTYPEM_BEGIN
BEGIN
R3DTYPEM_BEGIN
R3BOOL, FALSE if fails.
rc = obj.BEGIN();
Initializes datatype object for IO operations. This method allocates necessary resources (opens file, allocates memory etc.). This method must be called before any of the IO methoids defined below are used.
R3DTYPEM_END
END
R3DTYPEM_END
R3BOOL, FALSE if fails.
rc = obj.END();
Finishes IO operations. This method deallocates resources (closes file, deallocates memory etc.).
R3DTYPEM_SETROWBYTE
SETROWBYTE
R3DTYPEM_SETROWBYTE
R3BOOL, false if fails
R3INT, y coordinate of the line
R3INT, channel format R3DTCHANNELS_GRAYSCALE, R3DTCHANNELS_RGB or R3DTCHANNELS_RGBA
R3BYTE*, ptr to a data buffer
rc = obj.SETROWBYTE(p1, p2, p3);
Set scanline using 8 bits per channel data type. If the class supports * sub box access, the x position and width of line is defined by R3DTYPEA_Width, Height, OffsetX * and OffsetY defined in the attribute list below.
R3DTYPEM_SETROWWORD
SETROWWORD
R3DTYPEM_SETROWWORD
R3BOOL, FALSE if fails
R3INT, y coordinate of the line
R3INT, channel format R3DTCHANNELS_GRAYSCALE, R3DTCHANNELS_RGB or R3DTCHANNELS_RGBA
rc = obj.SETROWWORD(p1, p2, 0);
Write scanline consisting of short (16 bits per channel).
R3DTYPEM_SETROWINTEGER
SETROWINTEGER
R3DTYPEM_SETROWINTEGER
R3BOOL, false if fails
R3INT, y coordinate of the line
R3INT, channel format R3DTCHANNELS_GRAYSCALE, R3DTCHANNELS_RGB or R3DTCHANNELS_RGBA
R3INT*, ptr to a data buffer
rc = obj.SETROWINTEGER(p1, p2, p3);
Set scanline consisting of 32 bit integers (32 bits per channel).
R3DTYPEM_SETROWFLOAT
SETROWFLOAT
R3DTYPEM_SETROWFLOAT
R3INT, y coordinate of the line
R3INT, channel format R3DTCHANNELS_GRAYSCALE, R3DTCHANNELS_RGB or R3DTCHANNELS_RGBA
R3FLOAT, ptr to a data buffer
obj.SETROWFLOAT(p1, p2, p3);
Set scanline consisting of double precision floating points (64 bits per channel).
R3DTYPEM_SETROWRAW
SETROWRAW
R3DTYPEM_SETROWRAW
R3BOOL, false if fails
R3INT, y coordinate of the line
R3INT, channel format R3DTCHANNELS_GRAYSCALE, R3DTCHANNELS_RGB or R3DTCHANNELS_RGBA
void*, ptr to a data buffer
rc = obj.SETROWRAW(p1, p2, p3);
Set scanline in native format.
R3DTYPEM_GETROWBYTE
GETROWBYTE
R3DTYPEM_GETROWBYTE
R3BOOL, false if fails
R3INT, y coordinate of the line
R3INT, channel format R3DTCHANNELS_GRAYSCALE, R3DTCHANNELS_RGB or R3DTCHANNELS_RGBA
rc = obj.GETROWBYTE(p1, p2, 0);
Get scanline in byte per channel format (8 bits per channel).
R3DTYPEM_GETROWWORD
GETROWWORD
R3DTYPEM_GETROWWORD
R3BOOL, FALSE if fails
R3INT, y coordinate of the line
R3INT, channel format R3DTCHANNELS_GRAYSCALE, R3DTCHANNELS_RGB or R3DTCHANNELS_RGBA
rc = obj.GETROWWORD(p1, p2, 0);
Get scanline in 16 bits per channel integer format
R3DTYPEM_GETROWINTEGER
GETROWINTEGER
R3DTYPEM_GETROWINTEGER
R3BOOL, FALSE if fails
R3INT, y coordinate of the line
R3INT, channel format R3DTCHANNELS_GRAYSCALE, R3DTCHANNELS_RGB or R3DTCHANNELS_RGBA
R3INT*, ptr to a data buffer
rc = obj.GETROWINTEGER(p1, p2, p3);
Get scanline in 32 bit integer format (32 bits per channel)
R3DTYPEM_GETROWFLOAT
GETROWFLOAT
R3DTYPEM_GETROWFLOAT
R3BOOL, FALSE if fails
R3INT, y coordinate of the line
R3INT, channel format R3DTCHANNELS_GRAYSCALE, R3DTCHANNELS_RGB or R3DTCHANNELS_RGBA
R3FLOAT, ptr to a data buffer
rc = obj.GETROWFLOAT(p1, p2, p3);
Get scanline in double precision floating point format (64 bits per channel)
R3DTYPEM_GETROWRAW
GETROWRAW
R3DTYPEM_GETROWRAW
R3BOOL, NULL if fails
R3INT, y coordinate of the line
R3INT, channel format R3DTCHANNELS_GRAYSCALE, R3DTCHANNELS_RGB or R3DTCHANNELS_RGBA
char*, ptr to a data buffer
rc = obj.GETROWRAW(p1, p2, p3);
Read data without conversion, that is, in the form it is stored.
R3DTYPEM_GETPIXELFLOAT
GETPIXELFLOAT
R3DTYPEM_GETPIXELFLOAT
obj.GETPIXELFLOAT();
R3DTYPEM_SETPIXELFLOAT
SETPIXELFLOAT
R3DTYPEM_SETPIXELFLOAT
obj.SETPIXELFLOAT();
R3DTYPEM_GETCHANNELHANDLE
GETCHANNELHANDLE
R3DTYPEM_GETCHANNELHANDLE
R3BOOL, if TRUE pen is initialized for one sub channel reading. Otherwise whole channel is read.
R3INT, sub channel index. 0 defines first sub channel.
R3TAG*, tag list including R3DTYPEA_ChannelReader and/or R3DTYPEA_ChannelWriter tags.
obj.GETCHANNELHANDLE(p1, p2, p3);
Allocates a handle for reading currently selected channel or its sub channel
R3DTYPECM_FREECHANNELHANDLE
FREECHANNELHANDLE
R3DTYPECM_FREECHANNELHANDLE
obj.FREECHANNELHANDLE();
R3DTYPEM_VECTORIZE
VECTORIZE
R3DTYPEM_VECTORIZE
obj.VECTORIZE();
R3DTYPEM_SETROW
SETROW
R3DTYPEM_SETROW
R3INT, y coordinate of the line
char*, ptr to a data buffer
R3TAG*, tag list which must include: * R3DTYPEA_ChannelType - the data type of data buffer * R3DTYPEA_NormValue - the conversion factor (see r3typids.h) * R3DTYPEA_SubCount - number of sub channels
obj.SETROW(p1, p2, p3);
the most general get/set row methods which read and write one line of data in a defined data type. * If the class supports box access, the x position and width of line is defined by R3DTYPEA_Width, Height, * OffsetX and OffsetY defined in the attribute list below.
Data
Data
R3DTYPEA_Data
String
void*
address of the actual image data (of selected channel)
value = jsobj.GetData();
void* value;
R3GetAttrs(r3obj, R3DTYPEA_Data, &value, R3TAG_END);
SubCount
SubCount
R3DTYPEA_SubCount
Integer
R3INT
number of (currently selected sub) channels per pixel, RGB is 3 etc
jsobj.SetSubCount(value);
value = jsobj.GetSubCount();
R3INT value = ...;
R3SetAttrs(r3obj, R3DTYPEA_SubCount, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3DTYPEA_SubCount, &value, R3TAG_END);
ChannelType
ChannelType
R3DTYPEA_ChannelType
Integer
R3INT
sub channel datatype as defined in r3typids.h
jsobj.SetChannelType(value);
value = jsobj.GetChannelType();
R3INT value = ...;
R3SetAttrs(r3obj, R3DTYPEA_ChannelType, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3DTYPEA_ChannelType, &value, R3TAG_END);
NormValue
NormValue
R3DTYPEA_NormValue
Integer
R3INT
native 'unit' value, for conversion between dtypes
jsobj.SetNormValue(value);
value = jsobj.GetNormValue();
R3INT value = ...;
R3SetAttrs(r3obj, R3DTYPEA_NormValue, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3DTYPEA_NormValue, &value, R3TAG_END);
Width
Width
R3DTYPEA_Width
Integer
R3INT
actual size of the datatype ( may define a sub box in a larger image )
jsobj.SetWidth(value);
value = jsobj.GetWidth();
R3INT value = ...;
R3SetAttrs(r3obj, R3DTYPEA_Width, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3DTYPEA_Width, &value, R3TAG_END);
Height
Height
R3DTYPEA_Height
Integer
R3INT
actual size of the datatype ( may define a sub box in a larger image )
jsobj.SetHeight(value);
value = jsobj.GetHeight();
R3INT value = ...;
R3SetAttrs(r3obj, R3DTYPEA_Height, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3DTYPEA_Height, &value, R3TAG_END);
TotalWidth
TotalWidth
R3DTYPEA_TotalWidth
Integer
R3INT
total area width, used by dtypes that implement sub box IO
jsobj.SetTotalWidth(value);
value = jsobj.GetTotalWidth();
R3INT value = ...;
R3SetAttrs(r3obj, R3DTYPEA_TotalWidth, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3DTYPEA_TotalWidth, &value, R3TAG_END);
TotalHeight
TotalHeight
R3DTYPEA_TotalHeight
Integer
R3INT
total area height, used by dtypes that implement sub box IO
jsobj.SetTotalHeight(value);
value = jsobj.GetTotalHeight();
R3INT value = ...;
R3SetAttrs(r3obj, R3DTYPEA_TotalHeight, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3DTYPEA_TotalHeight, &value, R3TAG_END);
OffsetX
OffsetX
R3DTYPEA_OffsetX
Integer
R3INT
sub area horiz. position. Not all sub classes implement these
jsobj.SetOffsetX(value);
value = jsobj.GetOffsetX();
R3INT value = ...;
R3SetAttrs(r3obj, R3DTYPEA_OffsetX, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3DTYPEA_OffsetX, &value, R3TAG_END);
OffsetY
OffsetY
R3DTYPEA_OffsetY
Integer
R3INT
sub area vertical position. Not all sub classes implement these
jsobj.SetOffsetY(value);
value = jsobj.GetOffsetY();
R3INT value = ...;
R3SetAttrs(r3obj, R3DTYPEA_OffsetY, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3DTYPEA_OffsetY, &value, R3TAG_END);
BaseX
BaseX
R3DTYPEA_BaseX
Integer
R3INT
sub area base offset. Not all sub classes implement these
jsobj.SetBaseX(value);
value = jsobj.GetBaseX();
R3INT value = ...;
R3SetAttrs(r3obj, R3DTYPEA_BaseX, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3DTYPEA_BaseX, &value, R3TAG_END);
BaseY
BaseY
R3DTYPEA_BaseY
Integer
R3INT
sub area base offset. Not all sub classes implement these
jsobj.SetBaseY(value);
value = jsobj.GetBaseY();
R3INT value = ...;
R3SetAttrs(r3obj, R3DTYPEA_BaseY, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3DTYPEA_BaseY, &value, R3TAG_END);
Signed
Signed
R3DTYPEA_Signed
Boolean
R3BOOL
if TRUE integer type values can be negative (e.g R3BYTE used instead of R3UBYTE)
jsobj.SetSigned(value);
value = jsobj.GetSigned();
R3BOOL value = ...;
R3SetAttrs(r3obj, R3DTYPEA_Signed, value, R3TAG_END);
R3BOOL value;
R3GetAttrs(r3obj, R3DTYPEA_Signed, &value, R3TAG_END);
UserData
UserData
R3DTYPEA_UserData
String
void*
for user specific data
jsobj.SetUserData(value);
value = jsobj.GetUserData();
void* value = ...;
R3SetAttrs(r3obj, R3DTYPEA_UserData, value, R3TAG_END);
void* value;
R3GetAttrs(r3obj, R3DTYPEA_UserData, &value, R3TAG_END);
Default 'norm' values for float - fixed point integer conversion. New plugin data types may use norm values different from these. For example, a data type which stores percentage values probably uses norm value 100. Actual values are defined in inc/oops/r3typids.h.
Supported channel formats.