new Base2DRenderer(chemObj, drawBridge, options, renderConfigs, parent)
A base implementation of 2D chem object renderer.
You can call renderer.draw(context, chemObj, baseCoord, options) to draw the 2D structure,
where options can contain the settings of drawing style (strokeWidth, color...) and tranform params
(including scale, zoom, translate, rotateAngle...). The options can also have autoScale and autofit (Bool) field,
if autoScale is true, the scale value will be determinate by renderer while when autofit is true,
the drawn element will try to fullfill the whole context area (without margin). retainAspect will
decide whether aspect ratio will be preserved in autofit situation.
Note: zoom is not the same as scale. When scale is set or calculated, zoom will multiply on it and get the actual scale ratio.
for example, scale is 100 and zoom is 1.5, then the actual scale value will be 150.
Parameters:
Properties:
Name |
Type |
Description |
drawBridge |
Object
|
A object that implements the actual draw job. Read only. |
richTextDrawerClass |
Object
|
Class of drawer to draw rich text on context. Default is Kekule.Render.BaseRichTextDrawer. |
- Source:
-
beginUpdateRenderer()
-
Call this method before a series of rendered element updating job (for instance, call update method)
to avoid unnecessary redraw.
- Inherited From:
- Source:
-
canMeasureText(context) → {Bool}
-
Indicate whether current render and context can measure text dimension before drawing it.
HTML Canvas is a typical environment of this type.
Parameters:
Name |
Type |
Description |
context |
Object
|
|
- Source:
Returns:
-
Type
-
Bool
-
canModifyGraphic(context) → {Bool}
-
Whether current renderer can modify elements drawn on context.
Parameters:
Name |
Type |
Description |
context |
Object
|
|
- Inherited From:
- Source:
Returns:
-
Type
-
Bool
-
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
-
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
-
getAutoScaleRefDrawLength() → {Float}
-
Returns the standard draw length for calculation of autoScale. Usually this is the draw length of bond.
Descendants can override this method to use another length.
- Source:
Returns:
-
Type
-
Float
-
getAutoScaleRefObjLength() → {Float}
-
Returns the reference length in object to calculate autoscale.
- Source:
Returns:
-
Type
-
Float
-
getCoordMode() → {Int}
-
Report coord mode of this renderer.
- Inherited From:
- Source:
Returns:
-
Type
-
Int
-
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
-
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
|
|
- 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:
- Inherited From:
- Source:
Returns:
-
Type
-
Hash
-
-
Transform a context based coord to inner coord basd on chemObj coord system.
Parameters:
- Inherited From:
- Source:
Returns:
-
Type
-
Hash
-
transformScreenCoordToContext(context, coord) → {Hash}
-
Transform a screen based coord to context based one.
Note that only 2D renderer can map screen coord back.
Parameters:
Name |
Type |
Description |
context |
Object
|
|
coord |
Hash
|
|
- 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