/matlab_tools/Converted/kkabitmap.m
Objective C | 194 lines | 191 code | 3 blank | 0 comment | 60 complexity | 8657188d1d3f5af9f21da68dfc61664a MD5 | raw file
Possible License(s): BSD-3-Clause
- %kkabitmap 'Add a bitmap annotation object to a kobject '
- % This MatLab function was automatically generated by a converter (KhorosToMatLab) from the Khoros kabitmap.pane file
- %
- % Parameters:
- % InputFile: i 'Input ', required: 'First Input data object'
- % InputFile: ib 'Input bitmap', required: 'Second Input data object (kobject for bitmap creation)'
- % String: x 'X Position', default: '0': 'upper coordinate of bitmap placement'
- % String: y 'Y Position', default: '0': 'left coordinate of bitmap placement'
- % String: d 'Depth Position', default: '*': 'depth coordinate of bitmap placement'
- % String: t 'Time Position', default: '*': 'time coordinate of bitmap placement'
- % Integer: opacity 'Opacity', default: 100: 'Opacity for the bitmap'
- % String: transparent 'Additional transparent colors', default: ' ': 'list of additional transparent colors (separated by ;)'
- % OutputFile: o 'Output', required: 'Resulting output data object'
- %
- % Example: o = kkabitmap({i, ib}, {'i','';'ib','';'x','0';'y','0';'d','*';'t','*';'opacity',100;'transparent',' ';'o',''})
- %
- % Khoros helpfile follows below:
- %
- % PROGRAM
- % kabitmap - Add a bitmap annotation object to a kobject
- %
- % DESCRIPTION
- % This operator adds a bitmap annotation object to a kobject (specified with the [-i] parameter), saving the object with the new annotation in the file specified with the [-o] parameter. All embedded objects in the input object will be copied to the output object, which data will not be modified until it is passed through the karender kroutine. The bitmap is created from an image specified with the [-ib] parameter, which must be actually a kobject.
- % The position of the bitmap object is specified with the [-x] (start column) and [-y] (start row) coordinates. The bitmap will appear only on the frames specified with the [-t] and [-d] parameters.
- % The opacity that will be used when the object is rendered is specified with the [-opacity] parameter.
- % If there is mask on the input bitmap ([-ib]), the masked pixels will be considered completely transparent when rendered by karender. Some specific colors in the bitmap can be also be considered as transparent, and can be specified using the [-transparent] parameter, which is a list of strings separated by the ; character.
- %
- %
- %
- % EXAMPLES
- % All examples for the Annotate toolbox are listed on the $ANNOTATE/manual/index.html on-line manual.
- %
- % "SEE ALSO"
- % karender, kman pages for ka_decode_coord and ka_decode_frame_coord and on-line manual for information on the coordinates specification schemes.
- %
- % RESTRICTIONS
- % Expect the input bitmap file [-ib] to contain a single-frame image with e = 1 or 3.
- %
- % REFERENCES
- % All references for the Annotate toolbox are listed on the $ANNOTATE/manual/index.html on-line manual.
- %
- % COPYRIGHT
- % Annotate Toolbox v1.0 Copyright (C) 1997, Rafael Santos.
- %
- function varargout = kkabitmap(varargin)
- if nargin ==0
- Inputs={};arglist={'',''};
- elseif nargin ==1
- Inputs=varargin{1};arglist={'',''};
- elseif nargin ==2
- Inputs=varargin{1}; arglist=varargin{2};
- else error('Usage: [out1,..] = kkabitmap(Inputs,arglist).');
- end
- if size(arglist,2)~=2
- error('arglist must be of form {''ParameterTag1'',value1;''ParameterTag2'',value2}')
- end
- narglist={'i', '__input';'ib', '__input';'x', '0';'y', '0';'d', '*';'t', '*';'opacity', 100;'transparent', ' ';'o', '__output'};
- maxval={0,0,0,0,0,0,100,0,0};
- minval={0,0,0,0,0,0,0,0,0};
- istoggle=[0,0,0,0,1,1,1,1,0];
- was_set=istoggle * 0;
- paramtype={'InputFile','InputFile','String','String','String','String','Integer','String','OutputFile'};
- % identify the input arrays and assign them to the arguments as stated by the user
- if ~iscell(Inputs)
- Inputs = {Inputs};
- end
- NumReqOutputs=1; nextinput=1; nextoutput=1;
- for ii=1:size(arglist,1)
- wasmatched=0;
- for jj=1:size(narglist,1)
- if strcmp(arglist{ii,1},narglist{jj,1}) % a given argument was matched to the possible arguments
- wasmatched = 1;
- was_set(jj) = 1;
- if strcmp(narglist{jj,2}, '__input')
- if (nextinput > length(Inputs))
- error(['Input ' narglist{jj,1} ' has no corresponding input!']);
- end
- narglist{jj,2} = 'OK_in';
- nextinput = nextinput + 1;
- elseif strcmp(narglist{jj,2}, '__output')
- if (nextoutput > nargout)
- error(['Output nr. ' narglist{jj,1} ' is not present in the assignment list of outputs !']);
- end
- if (isempty(arglist{ii,2}))
- narglist{jj,2} = 'OK_out';
- else
- narglist{jj,2} = arglist{ii,2};
- end
- nextoutput = nextoutput + 1;
- if (minval{jj} == 0)
- NumReqOutputs = NumReqOutputs - 1;
- end
- elseif isstr(arglist{ii,2})
- narglist{jj,2} = arglist{ii,2};
- else
- if strcmp(paramtype{jj}, 'Integer') & (round(arglist{ii,2}) ~= arglist{ii,2})
- error(['Argument ' arglist{ii,1} ' is of integer type but non-integer number ' arglist{ii,2} ' was supplied']);
- end
- if (minval{jj} ~= 0 | maxval{jj} ~= 0)
- if (minval{jj} == 1 & maxval{jj} == 1 & arglist{ii,2} < 0)
- error(['Argument ' arglist{ii,1} ' must be bigger or equal to zero!']);
- elseif (minval{jj} == -1 & maxval{jj} == -1 & arglist{ii,2} > 0)
- error(['Argument ' arglist{ii,1} ' must be smaller or equal to zero!']);
- elseif (minval{jj} == 2 & maxval{jj} == 2 & arglist{ii,2} <= 0)
- error(['Argument ' arglist{ii,1} ' must be bigger than zero!']);
- elseif (minval{jj} == -2 & maxval{jj} == -2 & arglist{ii,2} >= 0)
- error(['Argument ' arglist{ii,1} ' must be smaller than zero!']);
- elseif (minval{jj} ~= maxval{jj} & arglist{ii,2} < minval{jj})
- error(['Argument ' arglist{ii,1} ' must be bigger than ' num2str(minval{jj})]);
- elseif (minval{jj} ~= maxval{jj} & arglist{ii,2} > maxval{jj})
- error(['Argument ' arglist{ii,1} ' must be smaller than ' num2str(maxval{jj})]);
- end
- end
- end
- if ~strcmp(narglist{jj,2},'OK_out') & ~strcmp(narglist{jj,2},'OK_in')
- narglist{jj,2} = arglist{ii,2};
- end
- end
- end
- if (wasmatched == 0 & ~strcmp(arglist{ii,1},''))
- error(['Argument ' arglist{ii,1} ' is not a valid argument for this function']);
- end
- end
- % match the remaining inputs/outputs to the unused arguments and test for missing required inputs
- for jj=1:size(narglist,1)
- if strcmp(paramtype{jj}, 'Toggle')
- if (narglist{jj,2} ==0)
- narglist{jj,1} = '';
- end;
- narglist{jj,2} = '';
- end;
- if ~strcmp(narglist{jj,2},'__input') && ~strcmp(narglist{jj,2},'__output') && istoggle(jj) && ~ was_set(jj)
- narglist{jj,1} = '';
- narglist{jj,2} = '';
- end;
- if strcmp(narglist{jj,2}, '__input')
- if (minval{jj} == 0) % meaning this input is required
- if (nextinput > size(Inputs))
- error(['Required input ' narglist{jj,1} ' has no corresponding input in the list!']);
- else
- narglist{jj,2} = 'OK_in';
- nextinput = nextinput + 1;
- end
- else % this is an optional input
- if (nextinput <= length(Inputs))
- narglist{jj,2} = 'OK_in';
- nextinput = nextinput + 1;
- else
- narglist{jj,1} = '';
- narglist{jj,2} = '';
- end;
- end;
- else
- if strcmp(narglist{jj,2}, '__output')
- if (minval{jj} == 0) % this is a required output
- if (nextoutput > nargout & nargout > 1)
- error(['Required output ' narglist{jj,1} ' is not stated in the assignment list!']);
- else
- narglist{jj,2} = 'OK_out';
- nextoutput = nextoutput + 1;
- NumReqOutputs = NumReqOutputs-1;
- end
- else % this is an optional output
- if (nargout - nextoutput >= NumReqOutputs)
- narglist{jj,2} = 'OK_out';
- nextoutput = nextoutput + 1;
- else
- narglist{jj,1} = '';
- narglist{jj,2} = '';
- end;
- end
- end
- end
- end
- if nargout
- varargout = cell(1,nargout);
- else
- varargout = cell(1,1);
- end
- global KhorosRoot
- if exist('KhorosRoot') && ~isempty(KhorosRoot)
- w=['"' KhorosRoot];
- else
- if ispc
- w='"C:\Program Files\dip\khorosBin\';
- else
- [s,w] = system('which cantata');
- w=['"' w(1:end-8)];
- end
- end
- [varargout{:}]=callKhoros([w 'kabitmap" '],Inputs,narglist);