Style
All renderable objects in Tissue Forge have a style
attribute, which can refer
to a rendering.Style
object (Style
in the rendering
namespace in C++).
A rendering.Style
object behaves like a container for a variety of style
descriptors. Each instance of an object with a style
automatically inherits the style of
its type, which can then be individually manipulated. The style
attribute
currently supports setting the color (setColor
) and
visibility (setVisible
) of its parent object.
Styling Particles
Each ParticleType
instance is initialized with a rendering.Style
instance that is stored in its style
attribute. By default,
all particles
are rendered according to the style of their type,
which can be changed at any time during simulation. However, each Particle
instance also has a style that, when set, provides instructions on how to uniquely
render the Particle
instance. The style of a Particle
can be set
using the style
attribute of its handle.
import tissue_forge as tf
class MyParticleType(tf.ParticleTypeSpec):
pass
my_particle_type = MyParticleType.get()
my_particle = my_particle_type()
my_particle.style = tf.rendering.Style()
my_particle.style.visible = True
Styling Particle Types in Python
The ParticleType
has a special procedure for specifying the style of
a type as a class definition in Python. The style
attribute of a ParticleType
subclass can be defined in Python as a
dictionary with key-value pairs for particle type class definitions. The color
of a type can be specified with the key "color"
and value of the name of a
color as a string. The visibility of a type can be specified with key
"visible"
and value of a Boolean.
class MyBlueParticleType(tf.ParticleTypeSpec):
style = {'color': 'CornflowerBlue', 'visible': False}
Styling Bonds
Bonds
, angles
, and dihedrals
have a rendering.Style
instance.
All instances of each class share the same rendering.Style
instance by default.
To customize the appearance of an individual bond, angle, or dihedral,
create and set a new style instance using the same procedure as for particles.:
# Create a bond between particles "part_a" and "part_b"
bh: tf.BondHandle = tf.Bond.create(potential, part_a, part_b)
# Make the bond invisible
bond_style = tf.rendering.Style()
bond_style.visible = False
bh.style = bond_style