vtkObject & vtkAlgorithm

本文详细介绍了VTK中的vtkObject基类及其核心功能,包括对象信息修改分发、数据删除、对象修改时间及RTTI支持。vtkObject提供了访问类属性的接口,并通过macro.newInstance创建实例。此外,文章还探讨了vtkAlgorithm类,它是vtk数据工作流的基础,阐述了如何设置输入输出数据以及如何实现requestData接口以处理数据更新。setter方法的实现确保了数据修改的通知。
vtkObject
 
vtk类支持通过macro.newInstance实现,一个vtk类实例一般包括两部分 model对象和publicAPI对象,其中类的属性定义在model中,暴露的方法定义在publicAPI中
 
macro.newInstance
export function newInstance(extend, className) {
  const constructor = (initialValues = {}) => {
    const model = {};
    const publicAPI = {};
    extend(publicAPI, model, initialValues);
    return Object.freeze(publicAPI);
  };


  // Register constructor to factory
  if (className) {
    vtk.register(className, constructor);
  }


  return constructor;
}

 

vtkObject是vtk中一切类的基类,通过macro.obj()方法定义到对象中主要包括下面功能
 
//对象信息修改分发
modified()
onModified(callback)
//对象删除
delete()
isDeleted():boolean
//对象修改时间
getMTime();

//对象RTTI支持
isA(className);
getClassName();

//返回一个格式化对象用于序列化
getState()

 

 
vtkObject同时提供了对类属性的访问接口
get(...list);  list为要获取的属性名列表,list为空则返回整个model对象,list不为空则返回一个新对象包括了要查询属性的键值。     
getReferenceByName(propertyName); 返回model中对应属性值。    
因为vtkjs中类属性定义在model中,且是隐式定义,可读性不好,大多数类暴露的属性也同时通过getter 和 setter方法暴露,所以一般不用上面方法直接去访问类属性,而用getter和setter,
一个类暴露了哪些属性也直接通过观察getter和setter可以看出,如:
getter和setter的实现参考上一篇:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值