r3output
real/frio/r3output.h
r3frio
Output Class. A output object connects a (image) datatype and the channel system.
r3Model
R3CLID_MODEL
r3Output
R3CLID_OUTPUT - 548
SELECTCHANNEL, SELECTCHANNELBYNAME, ENUMCHANNELS, BEGIN, END, EXPANDCOMMAND, ADDRAYCHANNEL, ADDIMAGECHANNEL, ADDBINDING, REMOVEBINDING, BINDRAYCHANNEL, BINDRAYSUBCHANNEL, CLEARBINDINGS, MAKEDEFAULTBINDINGS, UPDATEBINDINGS, BUFFERFULL, COPYLINE, QUERYCHANNEL, CREATERAWIMAGE, COPYTORAWIMAGE, REGISTERIMAGEFORMAT, CHANNELIDENTITYBINDI, CHANNELLISTIDENTITYB, FREERAYNODELIST, READLINE, FINDSETTINGCLASS, UPDATEBINDINGSBYIMAG, FINDBINDING, EXECCOMMAND, SELECTRAYCHANNEL, READCHANNEL, WRITECHANNEL,
Path, Width, Height, BoxSupport, TotalWidth, TotalHeight, OffsetX, OffsetY, OutputObject, Extension, Command, LanguageId, IsFinal, ClipX, ClipY, SubNames, SubCount, ChannelId, StorageType, RayChannelList, ImgChannelList, BindingList, Direction, DontCopy, IOReady, KeepOutputObject, BaseX, BaseY, NormValue, Signed, DisableCommand, IOPerChannel,
int R3RegisterOutputClass(R3APP *app);
R3OUTPM_SELECTCHANNEL
SELECTCHANNEL
R3OUTPM_SELECTCHANNEL
R3INT, format specific channel identifier
obj.SELECTCHANNEL(p3);
Selects a channel (used by objects that support multiple channels). * The selected channel is used by read/write operations. Channel is defined by * an integer.
R3OUTPM_SELECTCHANNELBYNAME
SELECTCHANNELBYNAME
R3OUTPM_SELECTCHANNELBYNAME
char*, name of channel
obj.SELECTCHANNELBYNAME(p3);
Selects a given image channel by its name in the attached datatype object. * Datatype IO methods require channel selection and this method provides fast channel name based * solution. Channel names are mapped to quicker identifiers in R3OUTPM_BEGIN method.
R3OUTPM_ENUMCHANNELS
ENUMCHANNELS
R3OUTPM_ENUMCHANNELS
R3OBJ*, object to be called
void*, optional context defined by caller and passed back as R3OUTPA_EnumContext tag
R3INT, method to be called
obj.ENUMCHANNELS(p1, p2, p3);
Enumerates the channels included in the object by sending * R3SendMsg3(p1=callobj, p3=callbackmth, storagetype, name, * R3OUTPA_SubNames, sub_names, * R3OUTPA_SubCount, sub_count, * R3OUTPA_NormValue, normvalue, * R3OUTPA_Signed, signed, R3OUTPA_EnumContext, callback_context, * R3TAG_END);
R3OUTPM_BEGIN
BEGIN
R3OUTPM_BEGIN
R3OBJ*, raysample object that defines dynamic channel configuration (raysamples that are * used for IO operations such as R3OUTPM_BUFFERFULL must have same channel cofingurations as this). * If NULL then bindings to dynamic channels will be unoperational.
obj.BEGIN(p3);
Begins IO operations. Resources are allocated and the object gets ready * for image data read/write usage.
R3OUTPM_END
END
R3OUTPM_END
R3BOOL, TRUE
rc = obj.END();
Ends IO operations. Depending on the object type, object may not be * readable/writeable after this.
R3OUTPM_EXPANDCOMMAND
EXPANDCOMMAND
R3OUTPM_EXPANDCOMMAND
char*, template (such as showimg -file [file])
char*, the actual expanded command (such as showimg -file myanim.bmp)
obj.EXPANDCOMMAND(p1, p3);
Expand the frame command macros [file], [path], [base] and [ext].
R3OUTPM_ADDRAYCHANNEL
ADDRAYCHANNEL
R3OUTPM_ADDRAYCHANNEL
obj.ADDRAYCHANNEL();
Used internally to build up the system channel list
R3OUTPM_ADDIMAGECHANNEL
ADDIMAGECHANNEL
R3OUTPM_ADDIMAGECHANNEL
obj.ADDIMAGECHANNEL();
Used internally to build up the image channel list
R3OUTPM_ADDBINDING
ADDBINDING
R3OUTPM_ADDBINDING
char*, ray channel name
char*, image channel name
obj.ADDBINDING(p1, p2, 0);
Adds a channel binding. Bindings define how data is moved between ray and image channels * and their sub channels.
R3OUTPM_REMOVEBINDING
REMOVEBINDING
R3OUTPM_REMOVEBINDING
char*, ray channel name
char*, image channel name
obj.REMOVEBINDING(p1, p2, 0);
Removes one binding definition
R3OUTPM_BINDRAYCHANNEL
BINDRAYCHANNEL
R3OUTPM_BINDRAYCHANNEL
R3INT, channel clid
obj.BINDRAYCHANNEL(p1, 0);
Binds a ray channel (all sub channels) to the closest matching image channel. Note: Output object must have the image datatype associated when using this method.
R3OUTPM_BINDRAYSUBCHANNEL
BINDRAYSUBCHANNEL
R3OUTPM_BINDRAYSUBCHANNEL
R3INT, ray channel clid
char*, sub channel name
obj.BINDRAYSUBCHANNEL(p1, p2, 0);
Binds one ray sub channel to the closest matching image channel.
R3OUTPM_CLEARBINDINGS
CLEARBINDINGS
R3OUTPM_CLEARBINDINGS
obj.CLEARBINDINGS();
R3OUTPM_MAKEDEFAULTBINDINGS
MAKEDEFAULTBINDINGS
R3OUTPM_MAKEDEFAULTBINDINGS
obj.MAKEDEFAULTBINDINGS();
R3OUTPM_UPDATEBINDINGS
UPDATEBINDINGS
R3OUTPM_UPDATEBINDINGS
obj.UPDATEBINDINGS();
R3OUTPM_BUFFERFULL
BUFFERFULL
R3OUTPM_BUFFERFULL
R3INT, 'y' index of the destination line
obj.BUFFERFULL(p1, 0);
Copies a line of image data to the image from a R3CLID_RAYSAMPLE object.
R3OUTPM_COPYLINE
COPYLINE
R3OUTPM_COPYLINE
R3INT, 'y' index of the source line
R3INT, 'y' index of the destination line
obj.COPYLINE(p1, p2, 0);
Copies a line of image data to the output image from a given source raw image.
R3OUTPM_QUERYCHANNEL
QUERYCHANNEL
R3OUTPM_QUERYCHANNEL
char*, name of channel
obj.QUERYCHANNEL(p3);
Checks if the given channel is included in the image channels
R3OUTPCM_CREATERAWIMAGE
CREATERAWIMAGE
R3OUTPCM_CREATERAWIMAGE
obj.CREATERAWIMAGE();
R3OUTPCM_COPYTORAWIMAGE
COPYTORAWIMAGE
R3OUTPCM_COPYTORAWIMAGE
R3OBJ*, NULL if fails.
void*, data for the progress callback
R3OBJ*, image to be converted
rc = obj.COPYTORAWIMAGE(0, p2, p3);
Class method. Create a ram based (r3rawim) image from the given image.
R3OUTPCM_REGISTERIMAGEFORMAT
REGISTERIMAGEFORMAT
R3OUTPCM_REGISTERIMAGEFORMAT
obj.REGISTERIMAGEFORMAT();
R3OUTPM_CHANNELIDENTITYBINDI
CHANNELIDENTITYBINDI
R3OUTPM_CHANNELIDENTITYBINDI
R3INT, channel clid
obj.CHANNELIDENTITYBINDI(p1, 0);
Adds identity bindings for all sub channels of one channel. The existence of the image channel is not checked. For example, Color->Red is always bind to Color->Red.
R3OUTPM_CHANNELLISTIDENTITYB
CHANNELLISTIDENTITYB
R3OUTPM_CHANNELLISTIDENTITYB
R3INT, channel clid
obj.CHANNELLISTIDENTITYB(p1, 0);
Like the previous method, but processes a list of R3RAYNODEs. Already existing bindings are not removed.
R3OUTPCM_FREERAYNODELIST
FREERAYNODELIST
R3OUTPCM_FREERAYNODELIST
R3LIST, a list of R3RAYNODEs (see definition below)
obj.FREERAYNODELIST(p3);
Deallocates the list allocated by R3OUTPCM_COLLECTOUTPUTTEDRAYCHANNELSFROMLIST
R3OUTPM_READLINE
READLINE
R3OUTPM_READLINE
R3INT, 'y' index of the source line
R3INT, 'y' index of the destination line
obj.READLINE(p1, p2, 0);
Copies a line of image data to a given raw image from the output source
R3OUTPCM_FINDSETTINGCLASS
FINDSETTINGCLASS
R3OUTPCM_FINDSETTINGCLASS
obj.FINDSETTINGCLASS();
R3OUTPM_UPDATEBINDINGSBYIMAG
UPDATEBINDINGSBYIMAG
R3OUTPM_UPDATEBINDINGSBYIMAG
obj.UPDATEBINDINGSBYIMAG();
R3OUTPM_FINDBINDING
FINDBINDING
R3OUTPM_FINDBINDING
char*, ray channel name or NULL if it does not matter
char*, image channel name or NULL if it does not matter
R3TAG*, a tag list where R3OUTPA_RaySubChannelName and R3OUTPA_RaySubChannelName either define * a particular sub channel or are NULL. *
obj.FINDBINDING(p1, p2, p3);
Tries finding a specified channel binding.
R3OUTPM_EXECCOMMAND
EXECCOMMAND
R3OUTPM_EXECCOMMAND
obj.EXECCOMMAND();
Execute the frame command
R3OUTPM_SELECTRAYCHANNEL
SELECTRAYCHANNEL
R3OUTPM_SELECTRAYCHANNEL
char*, name of the channel (using Realsoft3D side of chanel binding, not image type specific)
obj.SELECTRAYCHANNEL(p3);
Selects a channel for channelwise IO (see R3OUTPM_READ/WRITECHANNEL below)
R3OUTPM_READCHANNEL
READCHANNEL
R3OUTPM_READCHANNEL
R3INT, 'y' index of the source line
void*, buffer to which data is read
R3TAG*, R3OUTPA_Width, R3OUTPA_SubCount, R3OUTPA_Signed, R3OUTPA_NormValue, R3OUTPA_StorageType for the data
obj.READCHANNEL(p1, p2, p3);
Reads a line of channel data to a given buffer
R3OUTPM_WRITECHANNEL
WRITECHANNEL
R3OUTPM_WRITECHANNEL
R3INT, 'y' index of the source line
char*, buffer of write data
R3TAG*, R3OUTPA_Width, R3OUTPA_SubCount, R3OUTPA_Signed, R3OUTPA_NormValue, R3OUTPA_StorageType for the data
obj.WRITECHANNEL(p1, p2, p3);
Copies a line of image data to the output object from a given source buffer
Path
Path
R3OUTPA_Path
String
char*
file name
jsobj.SetPath(value);
value = jsobj.GetPath();
char* value = ...;
R3SetAttrs(r3obj, R3OUTPA_Path, value, R3TAG_END);
char* value;
R3GetAttrs(r3obj, R3OUTPA_Path, &value, R3TAG_END);
Width
Width
R3OUTPA_Width
Integer
R3INT
width of the image
jsobj.SetWidth(value);
value = jsobj.GetWidth();
R3INT value = ...;
R3SetAttrs(r3obj, R3OUTPA_Width, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3OUTPA_Width, &value, R3TAG_END);
Height
Height
R3OUTPA_Height
Integer
R3INT
height
jsobj.SetHeight(value);
value = jsobj.GetHeight();
R3INT value = ...;
R3SetAttrs(r3obj, R3OUTPA_Height, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3OUTPA_Height, &value, R3TAG_END);
BoxSupport
BoxSupport
R3OUTPA_BoxSupport
Boolean
R3BOOL
TRUE if supports boxes
jsobj.SetBoxSupport(value);
value = jsobj.GetBoxSupport();
R3BOOL value = ...;
R3SetAttrs(r3obj, R3OUTPA_BoxSupport, value, R3TAG_END);
R3BOOL value;
R3GetAttrs(r3obj, R3OUTPA_BoxSupport, &value, R3TAG_END);
TotalWidth
TotalWidth
R3OUTPA_TotalWidth
Integer
R3INT
width of a larger 'host' image. R3OUTPA_Width&Height define sub box in this
jsobj.SetTotalWidth(value);
value = jsobj.GetTotalWidth();
R3INT value = ...;
R3SetAttrs(r3obj, R3OUTPA_TotalWidth, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3OUTPA_TotalWidth, &value, R3TAG_END);
TotalHeight
TotalHeight
R3OUTPA_TotalHeight
Integer
R3INT
height of host image
jsobj.SetTotalHeight(value);
value = jsobj.GetTotalHeight();
R3INT value = ...;
R3SetAttrs(r3obj, R3OUTPA_TotalHeight, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3OUTPA_TotalHeight, &value, R3TAG_END);
OffsetX
OffsetX
R3OUTPA_OffsetX
Integer
R3INT
horiz. offset for box output, used by line read&write ops
jsobj.SetOffsetX(value);
value = jsobj.GetOffsetX();
R3INT value = ...;
R3SetAttrs(r3obj, R3OUTPA_OffsetX, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3OUTPA_OffsetX, &value, R3TAG_END);
OffsetY
OffsetY
R3OUTPA_OffsetY
Integer
R3INT
vert. offset for box output, used by line read&write ops
jsobj.SetOffsetY(value);
value = jsobj.GetOffsetY();
R3INT value = ...;
R3SetAttrs(r3obj, R3OUTPA_OffsetY, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3OUTPA_OffsetY, &value, R3TAG_END);
OutputObject
OutputObject
R3OUTPA_OutputObject
Object
R3OBJ*
actual output object, such as file format,window etc. Refcount managed!
jsobj.SetOutputObject(value);
value = jsobj.GetOutputObject();
R3OBJ* value = ...;
R3SetAttrs(r3obj, R3OUTPA_OutputObject, value, R3TAG_END);
R3OBJ* value;
R3GetAttrs(r3obj, R3OUTPA_OutputObject, &value, R3TAG_END);
Extension
Extension
R3OUTPA_Extension
String
char*
file extension, such as .avi, .jpg, .tga etc.
jsobj.SetExtension(value);
value = jsobj.GetExtension();
char* value = ...;
R3SetAttrs(r3obj, R3OUTPA_Extension, value, R3TAG_END);
char* value;
R3GetAttrs(r3obj, R3OUTPA_Extension, &value, R3TAG_END);
Command
Command
R3OUTPA_Command
String
char*
frame command
jsobj.SetCommand(value);
value = jsobj.GetCommand();
char* value = ...;
R3SetAttrs(r3obj, R3OUTPA_Command, value, R3TAG_END);
char* value;
R3GetAttrs(r3obj, R3OUTPA_Command, &value, R3TAG_END);
LanguageId
LanguageId
R3OUTPA_LanguageId
Integer
int
class of the frame command
jsobj.SetLanguageId(value);
value = jsobj.GetLanguageId();
int value = ...;
R3SetAttrs(r3obj, R3OUTPA_LanguageId, value, R3TAG_END);
int value;
R3GetAttrs(r3obj, R3OUTPA_LanguageId, &value, R3TAG_END);
IsFinal
IsFinal
R3OUTPA_IsFinal
Boolean
R3BOOL
TRUE if associated with final image
jsobj.SetIsFinal(value);
value = jsobj.GetIsFinal();
R3BOOL value = ...;
R3SetAttrs(r3obj, R3OUTPA_IsFinal, value, R3TAG_END);
R3BOOL value;
R3GetAttrs(r3obj, R3OUTPA_IsFinal, &value, R3TAG_END);
ClipX
ClipX
R3OUTPA_ClipX
Integer
int
All data outside (ClipX,ClipY)..(ClipX+Width-1, ClipY+Height-1) written
jsobj.SetClipX(value);
value = jsobj.GetClipX();
int value = ...;
R3SetAttrs(r3obj, R3OUTPA_ClipX, value, R3TAG_END);
int value;
R3GetAttrs(r3obj, R3OUTPA_ClipX, &value, R3TAG_END);
ClipY
ClipY
R3OUTPA_ClipY
Integer
int
using BUFFERFULL or COPYLINE methods is clipped
jsobj.SetClipY(value);
value = jsobj.GetClipY();
int value = ...;
R3SetAttrs(r3obj, R3OUTPA_ClipY, value, R3TAG_END);
int value;
R3GetAttrs(r3obj, R3OUTPA_ClipY, &value, R3TAG_END);
SubNames
SubNames
R3OUTPA_SubNames
String
char**
sub channel names of currently selected channel (NULL if subcnt==1)
value = jsobj.GetSubNames();
char** value;
R3GetAttrs(r3obj, R3OUTPA_SubNames, &value, R3TAG_END);
SubCount
SubCount
R3OUTPA_SubCount
Integer
R3INT
sub channel count of currently selected channel
value = jsobj.GetSubCount();
R3INT value;
R3GetAttrs(r3obj, R3OUTPA_SubCount, &value, R3TAG_END);
ChannelId
ChannelId
R3OUTPA_ChannelId
Integer
R3INT
unique identifier of the currently selected channel name
value = jsobj.GetChannelId();
R3INT value;
R3GetAttrs(r3obj, R3OUTPA_ChannelId, &value, R3TAG_END);
StorageType
StorageType
R3OUTPA_StorageType
Integer
R3INT
type of the sub item of currently selected channel (R3TID_BYTE..R3TID_FLOAT)
value = jsobj.GetStorageType();
R3INT value;
R3GetAttrs(r3obj, R3OUTPA_StorageType, &value, R3TAG_END);
RayChannelList
RayChannelList
R3OUTPA_RayChannelList
r3List
R3LIST*
'R3OUTPA_RayChannelList' not documented
value = jsobj.GetRayChannelList();
R3LIST* value;
R3GetAttrs(r3obj, R3OUTPA_RayChannelList, &value, R3TAG_END);
ImgChannelList
ImgChannelList
R3OUTPA_ImgChannelList
r3List
R3LIST*
'R3OUTPA_ImgChannelList' not documented
value = jsobj.GetImgChannelList();
R3LIST* value;
R3GetAttrs(r3obj, R3OUTPA_ImgChannelList, &value, R3TAG_END);
BindingList
BindingList
R3OUTPA_BindingList
r3List
R3LIST*
list of R3OUTBINDING nodes
value = jsobj.GetBindingList();
R3LIST* value;
R3GetAttrs(r3obj, R3OUTPA_BindingList, &value, R3TAG_END);
Direction
Direction
R3OUTPA_Direction
Integer
int
'R3OUTPA_Direction' not documented
jsobj.SetDirection(value);
value = jsobj.GetDirection();
int value = ...;
R3SetAttrs(r3obj, R3OUTPA_Direction, value, R3TAG_END);
int value;
R3GetAttrs(r3obj, R3OUTPA_Direction, &value, R3TAG_END);
DontCopy
DontCopy
R3OUTPA_DontCopy
Boolean
R3BOOL
if TRUE, use this output object only to hold binding lists, not for copying data
jsobj.SetDontCopy(value);
value = jsobj.GetDontCopy();
R3BOOL value = ...;
R3SetAttrs(r3obj, R3OUTPA_DontCopy, value, R3TAG_END);
R3BOOL value;
R3GetAttrs(r3obj, R3OUTPA_DontCopy, &value, R3TAG_END);
IOReady
IOReady
R3OUTPA_IOReady
Boolean
R3BOOL
use this to test if OUTPM_BEGIN has been executed
value = jsobj.GetIOReady();
R3BOOL value;
R3GetAttrs(r3obj, R3OUTPA_IOReady, &value, R3TAG_END);
KeepOutputObject
KeepOutputObject
R3OUTPA_KeepOutputObject
Boolean
R3BOOL
if true R3OUTPA_OutputObject is not lost in OUTPM_END
jsobj.SetKeepOutputObject(value);
value = jsobj.GetKeepOutputObject();
R3BOOL value = ...;
R3SetAttrs(r3obj, R3OUTPA_KeepOutputObject, value, R3TAG_END);
R3BOOL value;
R3GetAttrs(r3obj, R3OUTPA_KeepOutputObject, &value, R3TAG_END);
BaseX
BaseX
R3OUTPA_BaseX
Integer
R3INT
additional 'base level' offset. Total offset is R3OUTPA_BaseX+R3OUTPA_OffsetX
jsobj.SetBaseX(value);
value = jsobj.GetBaseX();
R3INT value = ...;
R3SetAttrs(r3obj, R3OUTPA_BaseX, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3OUTPA_BaseX, &value, R3TAG_END);
BaseY
BaseY
R3OUTPA_BaseY
Integer
R3INT
jsobj.SetBaseY(value);
value = jsobj.GetBaseY();
R3INT value = ...;
R3SetAttrs(r3obj, R3OUTPA_BaseY, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3OUTPA_BaseY, &value, R3TAG_END);
NormValue
NormValue
R3OUTPA_NormValue
Integer
int
float-integer conversion factor: ival = normvalue*fval, see also r3dtype.h
value = jsobj.GetNormValue();
int value;
R3GetAttrs(r3obj, R3OUTPA_NormValue, &value, R3TAG_END);
Signed
Signed
R3OUTPA_Signed
Boolean
R3BOOL
TRUE if channel is signed
value = jsobj.GetSigned();
R3BOOL value;
R3GetAttrs(r3obj, R3OUTPA_Signed, &value, R3TAG_END);
DisableCommand
DisableCommand
R3OUTPA_DisableCommand
Boolean
R3BOOL
disable frame command
jsobj.SetDisableCommand(value);
value = jsobj.GetDisableCommand();
R3BOOL value = ...;
R3SetAttrs(r3obj, R3OUTPA_DisableCommand, value, R3TAG_END);
R3BOOL value;
R3GetAttrs(r3obj, R3OUTPA_DisableCommand, &value, R3TAG_END);
IOPerChannel
IOPerChannel
R3OUTPA_IOPerChannel
Boolean
R3BOOL
read only. TRUE if channelwise operations are possible (no channel cross bindings). Check after R3OUTPM_BEGIN
value = jsobj.GetIOPerChannel();
R3BOOL value;
R3GetAttrs(r3obj, R3OUTPA_IOPerChannel, &value, R3TAG_END);
Note: ClipX & ClipY define offsets for data source reading, OffsetX & OffsetY define offset in the output target
values for R3OUTPA_Direction
n.name defines channel name
see typids.h
float-integer conversion factor: ival = normvalue*fval
1 if negative values allowed. -1=use default convention of the applied datatype