Class: ChemObj3DRenderer

Kekule.Render. ChemObj3DRenderer

new ChemObj3DRenderer()

A base class to render a chem object in 3D.
Source:

Extends

Methods

beginUpdateRenderer()

Call this method before a series of rendered element updating job (for instance, call update method) to avoid unnecessary redraw.
Inherited From:
Source:

canModifyGraphic(context) → {Bool}

Whether current renderer can modify elements drawn on context.
Parameters:
Name Type Description
context Object
Inherited From:
Source:
Returns:
Type
Bool

changeGeometryOptions(context, newOptions)

Repaint with only geometry options changes (without the modification of chemobj or draw color/length settings). Sometimes this repainting can be achieved by the modify of camera position (without recalc the position of node and connectors) so that the speed may enhance greatly.
Parameters:
Name Type Description
context Object
newOptions Hash
Source:

clear(context) → {Bool}

Clear whole chemObj on context.
Parameters:
Name Type Description
context Object
Inherited From:
Source:
Returns:
Whether the actual clear job is done.
Type
Bool

doClear(context) → {Bool}

Do actual job of clear. This function should return true after actual work done. Otherwise false should be returned.
Parameters:
Name Type Description
context Object
Inherited From:
Source:
Returns:
Type
Bool

doClearSelf(context) → {Bool}

Do actual job of clear self (without children). Descendants should override this method. This function should return true after actual work done. Otherwise false should be returned.
Parameters:
Name Type Description
context Object
Inherited From:
Source:
Returns:
Type
Bool

draw(context, baseCoord, options) → {Object}

Draw an instance of ChemObject to context. The actual job is done in doDraw method. Descendants should override doDraw.
Parameters:
Name Type Description
context Object Context to be drawn, such as Canvas, SVG, VML and so on.
baseCoord Hash Base coord to draw this object, can be null to use coord of chemObj itself. This coord is based on context.
options Hash Draw options, such as draw rectangle, draw style, zoom and so on. Different renderer may requires different option params. In options hash object, there may be one special array field: partialDrawObjs. If this field is set, then only chem objects in this array will be actually drawn.
Inherited From:
Source:
Returns:
Drawn element on context (such as SVG) or null on direct context (such as canvas).
Type
Object

endUpdateRenderer()

Call this method after a series of rendered element updateing job, notify the renderer to redraw the context.
Inherited From:
Source:

estimateObjBox(context, options, allowCoordBorrow) → {Hash}

Estimate the bound box around current chemObj (in chem coord system).
Parameters:
Name Type Description
context Object
options Object
allowCoordBorrow Bool
Inherited From:
Source:
Returns:
A 2D or 3D box, in chemObj's coord system.
Type
Hash

estimateRenderBox(context, baseCoord, options, allowCoordBorrow) → {Hash}

Estimate the bound box need to render current chemObj (in context coord system). Note: this method should not be called outside draw(). Otherwise the result may be unreliable or even no result can be returned.
Parameters:
Name Type Description
context Object
baseCoord Hash Center coord in context to draw object. Can be null.
options Object
allowCoordBorrow Bool
Inherited From:
Source:
Returns:
A 2D or 3D box, in context's coord system.
Type
Hash

generateTransformParams(context, baseCoord, drawOptions, objBox) → {Hash}

Calculate the coordinate transform options from drawOptions. Descendants can override this method. Note that unit length and zoom is not take into consideration in this method.
Parameters:
Name Type Description
context Object
baseCoord Hash
drawOptions Hash
objBox Hash
Source:
Returns:
Type
Hash

getAutoBaseCoord(drawOptions) → {Hash}

Auto calculate draw context coord by coord of chem obj. When no baseCoord is provided in draw method, this result may be used instead.
Parameters:
Name Type Description
drawOptions Hash
Inherited From:
Source:
Returns:
Type
Hash

getAutofitObjBoxInflation(context, chemObj, drawOptions) → {Hash}

Returns a automatic inflation value in autofit drawing. Usually a radius of atom ball. Descendants may override this method.
Parameters:
Name Type Description
context Object
chemObj Kekule.ChemObject
drawOptions Object
Source:
Returns:
{x, y, z}
Type
Hash

getCameraProps(context) → {Hash}

Returns properties of current camera, including position(coord), fov, aspect and so on.
Parameters:
Name Type Description
context Object
Inherited From:
Source:
Returns:
Type
Hash

getCoordMode() → {Int}

Report coord mode of this renderer.
Inherited From:
Source:
Returns:
Value from Kekule.CoordMode.
Type
Int

getFinalTransformParams(context, transformParams) → {Hash}

Calculate the final params for translation. Zoom and unit length are taken into consideration.
Parameters:
Name Type Description
context Object
transformParams Hash
Source:
Returns:
Type
Hash

getLightCount(context) → {Int}

Returns count of lights in context.
Parameters:
Name Type Description
context Object
Inherited From:
Source:
Returns:
Type
Int

getLightProps(context, lightIndex) → {Hash}

Get properties of light at index.
Parameters:
Name Type Description
context Object
lightIndex Int
Inherited From:
Source:
Returns:
Type
Hash

getRenderCache() → {Hash}

Returns draw params (center coord, options, matrix...) on last draw process on context.
Inherited From:
Source:
Returns:
Type
Hash

isChemObjRenderedBySelf(context, obj) → {boolean}

Indicate whether a chemObj (including childObj) is rendered by this renderer, or should be rendered by this renderer. Descendants may override this method.
Parameters:
Name Type Description
context Object
obj Object
Inherited From:
Source:
Returns:
Type
boolean

isChemObjRenderedDirectlyBySelf(context, obj) → {boolean}

Indicate whether a chemObj (including childObj) is rendered directly by this renderer (not by child renderers). Descendants may override this method.
Parameters:
Name Type Description
context Object
obj Object
Inherited From:
Source:
Returns:
Type
boolean

isRootRenderer()

Check if current renderer is the topmost one (without parent renderer, but maybe has parent painter).
Inherited From:
Source:

isUpdatingRenderer() → {Bool}

Check if beginUpdateRenderer is called and endUpdateRenderer is not called yet.
Inherited From:
Source:
Returns:
Type
Bool

prepareTransformParams(context, baseCoord, drawOptions, objBox) → {Hash}

Prepare 3D transform params from baseCoord and drawOptions. If drawOptions.transformParams already set, this method will do nothing.
Parameters:
Name Type Description
context Object
baseCoord Hash
drawOptions Hash
objBox Hash
Source:
Returns:
Type
Hash

redraw(context)

Redraw previous object on context with same draw options. Should not be called before draw.
Parameters:
Name Type Description
context Object
Inherited From:
Source:

removeDrawnElem(context, elem)

Remove an element in context.
Parameters:
Name Type Description
context Object
elem Object
Inherited From:
Source:

setCameraProps(context, props)

Set properties of current camera, including position(coord), fov, aspect and so on.
Parameters:
Name Type Description
context Object
props Hash
Inherited From:
Source:

setLightProps(context, lightIndex, props)

Get properties of light at index.
Parameters:
Name Type Description
context Object
lightIndex Int
props Hash
Inherited From:
Source:

transformContextCoordToScreen(context, coord) → {Hash}

Transform a context based coord to screen based one (usually in pixel).
Parameters:
Name Type Description
context Object
coord Hash
Inherited From:
Source:
Returns:
Type
Hash

transformCoordToContext(context, chemObj, coord) → {Hash}

Transform a chemObj based inner coord to context based one.
Parameters:
Name Type Description
context Object
chemObj Kekule.ChemObject
coord Hash
Inherited From:
Source:
Returns:
Type
Hash

transformCoordToObj(context, chemObj, coord) → {Hash}

Transform a context based coord to inner coord basd on chemObj coord system.
Parameters:
Name Type Description
context Object
chemObj Kekule.ChemObject
coord Hash
Inherited From:
Source:
Returns:
Type
Hash

update(context, updatedObjDetails, updateType) → {Bool}

Update a child object inside chemObj. Must be called after draw.
Parameters:
Name Type Description
context Object
updatedObjDetails Variant Object detail containing field {obj, propNames} or array of details.
updateType Int Value from Kekule.Render.ObjectUpdateType
Inherited From:
Source:
Returns:
Type
Bool

updateEx(updateInfos) → {Bool}

Do a update job according to info provided by updateItems. Must be called after draw.
Parameters:
Name Type Description
updateInfos Array Each item has format: {context, items: [{updateType, updatedObjDetails: [{obj, propNames}]}]}
Inherited From:
Source:
Returns:
Type
Bool

Events

clear

Invoked when whole chem object (molecule, reaction...) is cleared from context. event param of it has two fields: {context, obj} NOTE: this event is not well implemented and may be buggy.
Inherited From:
Source:

draw

Invoked when whole chem object (molecule, reaction...) is drawn in context. event param of it has two fields: {context, obj}
Inherited From:
Source:

prepareDrawing

Invoked when whole chem object (molecule, reaction...) is prepared to be drawn in context. event param of it has two fields: {context, obj}
Inherited From:
Source:

updateBasicDrawObject

Invoked when a basic object (node, connector, glyph...) is drawn, updated or removed. event param of it has fields: {obj, parentObj, boundInfo, updateType} where boundInfo provides the bound box information of this object on context. It has the following fields: { context: drawing context object obj: drawn object parentObj: parent of drawn object boundInfo: a hash containing info of bound, including fields: { shapeType: value from Kekule.Render.MetaShapeType or Kekule.Render.Meta3DShapeType. coords: [Array of coords] } updateType: add, modify or remove } boundInfo may also be a array for complex situation (such as multicenter bond): [boundInfo1, boundInfo2, boundInfo3...]. Note that in removed event, boundInfo may be null.
Inherited From:
Source:

Kekule.Render. ChemObj3DRenderer

new ChemObj3DRenderer()

Source:

Methods

beginUpdateRenderer()

Call this method before a series of rendered element updating job (for instance, call update method) to avoid unnecessary redraw.
Inherited From:
Source:

canModifyGraphic(context) → {Bool}

Whether current renderer can modify elements drawn on context.
Parameters:
Name Type Description
context Object
Inherited From:
Source:
Returns:
Type
Bool

changeGeometryOptions(context, newOptions)

Repaint with only geometry options changes (without the modification of chemobj or draw color/length settings). Sometimes this repainting can be achieved by the modify of camera position (without recalc the position of node and connectors) so that the speed may enhance greatly.
Parameters:
Name Type Description
context Object
newOptions Hash
Source:

clear(context) → {Bool}

Clear whole chemObj on context.
Parameters:
Name Type Description
context Object
Inherited From:
Source:
Returns:
Whether the actual clear job is done.
Type
Bool

doClear(context) → {Bool}

Do actual job of clear. This function should return true after actual work done. Otherwise false should be returned.
Parameters:
Name Type Description
context Object
Inherited From:
Source:
Returns:
Type
Bool

doClearSelf(context) → {Bool}

Do actual job of clear self (without children). Descendants should override this method. This function should return true after actual work done. Otherwise false should be returned.
Parameters:
Name Type Description
context Object
Inherited From:
Source:
Returns:
Type
Bool

draw(context, baseCoord, options) → {Object}

Draw an instance of ChemObject to context. The actual job is done in doDraw method. Descendants should override doDraw.
Parameters:
Name Type Description
context Object Context to be drawn, such as Canvas, SVG, VML and so on.
baseCoord Hash Base coord to draw this object, can be null to use coord of chemObj itself. This coord is based on context.
options Hash Draw options, such as draw rectangle, draw style, zoom and so on. Different renderer may requires different option params. In options hash object, there may be one special array field: partialDrawObjs. If this field is set, then only chem objects in this array will be actually drawn.
Inherited From:
Source:
Returns:
Drawn element on context (such as SVG) or null on direct context (such as canvas).
Type
Object

endUpdateRenderer()

Call this method after a series of rendered element updateing job, notify the renderer to redraw the context.
Inherited From:
Source:

estimateObjBox(context, options, allowCoordBorrow) → {Hash}

Estimate the bound box around current chemObj (in chem coord system).
Parameters:
Name Type Description
context Object
options Object
allowCoordBorrow Bool
Inherited From:
Source:
Returns:
A 2D or 3D box, in chemObj's coord system.
Type
Hash

estimateRenderBox(context, baseCoord, options, allowCoordBorrow) → {Hash}

Estimate the bound box need to render current chemObj (in context coord system). Note: this method should not be called outside draw(). Otherwise the result may be unreliable or even no result can be returned.
Parameters:
Name Type Description
context Object
baseCoord Hash Center coord in context to draw object. Can be null.
options Object
allowCoordBorrow Bool
Inherited From:
Source:
Returns:
A 2D or 3D box, in context's coord system.
Type
Hash

generateTransformParams(context, baseCoord, drawOptions, objBox) → {Hash}

Calculate the coordinate transform options from drawOptions. Descendants can override this method. Note that unit length and zoom is not take into consideration in this method.
Parameters:
Name Type Description
context Object
baseCoord Hash
drawOptions Hash
objBox Hash
Source:
Returns:
Type
Hash

getAutoBaseCoord(drawOptions) → {Hash}

Auto calculate draw context coord by coord of chem obj. When no baseCoord is provided in draw method, this result may be used instead.
Parameters:
Name Type Description
drawOptions Hash
Inherited From:
Source:
Returns:
Type
Hash

getAutofitObjBoxInflation(context, chemObj, drawOptions) → {Hash}

Returns a automatic inflation value in autofit drawing. Usually a radius of atom ball. Descendants may override this method.
Parameters:
Name Type Description
context Object
chemObj Kekule.ChemObject
drawOptions Object
Source:
Returns:
{x, y, z}
Type
Hash

getCameraProps(context) → {Hash}

Returns properties of current camera, including position(coord), fov, aspect and so on.
Parameters:
Name Type Description
context Object
Inherited From:
Source:
Returns:
Type
Hash

getCoordMode() → {Int}

Report coord mode of this renderer.
Inherited From:
Source:
Returns:
Value from Kekule.CoordMode.
Type
Int

getFinalTransformParams(context, transformParams) → {Hash}

Calculate the final params for translation. Zoom and unit length are taken into consideration.
Parameters:
Name Type Description
context Object
transformParams Hash
Source:
Returns:
Type
Hash

getLightCount(context) → {Int}

Returns count of lights in context.
Parameters:
Name Type Description
context Object
Inherited From:
Source:
Returns:
Type
Int

getLightProps(context, lightIndex) → {Hash}

Get properties of light at index.
Parameters:
Name Type Description
context Object
lightIndex Int
Inherited From:
Source:
Returns:
Type
Hash

getRenderCache() → {Hash}

Returns draw params (center coord, options, matrix...) on last draw process on context.
Inherited From:
Source:
Returns:
Type
Hash

isChemObjRenderedBySelf(context, obj) → {boolean}

Indicate whether a chemObj (including childObj) is rendered by this renderer, or should be rendered by this renderer. Descendants may override this method.
Parameters:
Name Type Description
context Object
obj Object
Inherited From:
Source:
Returns:
Type
boolean

isChemObjRenderedDirectlyBySelf(context, obj) → {boolean}

Indicate whether a chemObj (including childObj) is rendered directly by this renderer (not by child renderers). Descendants may override this method.
Parameters:
Name Type Description
context Object
obj Object
Inherited From:
Source:
Returns:
Type
boolean

isRootRenderer()

Check if current renderer is the topmost one (without parent renderer, but maybe has parent painter).
Inherited From:
Source:

isUpdatingRenderer() → {Bool}

Check if beginUpdateRenderer is called and endUpdateRenderer is not called yet.
Inherited From:
Source:
Returns:
Type
Bool

prepareTransformParams(context, baseCoord, drawOptions, objBox) → {Hash}

Prepare 3D transform params from baseCoord and drawOptions. If drawOptions.transformParams already set, this method will do nothing.
Parameters:
Name Type Description
context Object
baseCoord Hash
drawOptions Hash
objBox Hash
Source:
Returns:
Type
Hash

redraw(context)

Redraw previous object on context with same draw options. Should not be called before draw.
Parameters:
Name Type Description
context Object
Inherited From:
Source:

removeDrawnElem(context, elem)

Remove an element in context.
Parameters:
Name Type Description
context Object
elem Object
Inherited From:
Source:

setCameraProps(context, props)

Set properties of current camera, including position(coord), fov, aspect and so on.
Parameters:
Name Type Description
context Object
props Hash
Inherited From:
Source:

setLightProps(context, lightIndex, props)

Get properties of light at index.
Parameters:
Name Type Description
context Object
lightIndex Int
props Hash
Inherited From:
Source:

transformContextCoordToScreen(context, coord) → {Hash}

Transform a context based coord to screen based one (usually in pixel).
Parameters:
Name Type Description
context Object
coord Hash
Inherited From:
Source:
Returns:
Type
Hash

transformCoordToContext(context, chemObj, coord) → {Hash}

Transform a chemObj based inner coord to context based one.
Parameters:
Name Type Description
context Object
chemObj Kekule.ChemObject
coord Hash
Inherited From:
Source:
Returns:
Type
Hash

transformCoordToObj(context, chemObj, coord) → {Hash}

Transform a context based coord to inner coord basd on chemObj coord system.
Parameters:
Name Type Description
context Object
chemObj Kekule.ChemObject
coord Hash
Inherited From:
Source:
Returns:
Type
Hash

update(context, updatedObjDetails, updateType) → {Bool}

Update a child object inside chemObj. Must be called after draw.
Parameters:
Name Type Description
context Object
updatedObjDetails Variant Object detail containing field {obj, propNames} or array of details.
updateType Int Value from Kekule.Render.ObjectUpdateType
Inherited From:
Source:
Returns:
Type
Bool

updateEx(updateInfos) → {Bool}

Do a update job according to info provided by updateItems. Must be called after draw.
Parameters:
Name Type Description
updateInfos Array Each item has format: {context, items: [{updateType, updatedObjDetails: [{obj, propNames}]}]}
Inherited From:
Source:
Returns:
Type
Bool

Events

clear

Invoked when whole chem object (molecule, reaction...) is cleared from context. event param of it has two fields: {context, obj} NOTE: this event is not well implemented and may be buggy.
Inherited From:
Source:

draw

Invoked when whole chem object (molecule, reaction...) is drawn in context. event param of it has two fields: {context, obj}
Inherited From:
Source:

prepareDrawing

Invoked when whole chem object (molecule, reaction...) is prepared to be drawn in context. event param of it has two fields: {context, obj}
Inherited From:
Source:

updateBasicDrawObject

Invoked when a basic object (node, connector, glyph...) is drawn, updated or removed. event param of it has fields: {obj, parentObj, boundInfo, updateType} where boundInfo provides the bound box information of this object on context. It has the following fields: { context: drawing context object obj: drawn object parentObj: parent of drawn object boundInfo: a hash containing info of bound, including fields: { shapeType: value from Kekule.Render.MetaShapeType or Kekule.Render.Meta3DShapeType. coords: [Array of coords] } updateType: add, modify or remove } boundInfo may also be a array for complex situation (such as multicenter bond): [boundInfo1, boundInfo2, boundInfo3...]. Note that in removed event, boundInfo may be null.
Inherited From:
Source: