class_docstr: BaseTransform subclass that performs a sequence of transformations in
  order. Internally, this class uses shaders.FunctionChain to generate
  its glsl_map and glsl_imap functions.
  
  Parameters
  ----------
  transforms : list of BaseTransform instances
      See ``transforms`` property.
class_docstr_tok: ["BaseTransform","subclass","that","performs","a","sequence","of","transformations","in","order",".","Internally",",","this","class","uses","shaders.FunctionChain","to","generate","its","glsl_map","and","glsl_imap","functions",".","Parameters","--","--","--","--","--","transforms",":","list","of","BaseTransform","instances","See","``","transforms","``","property","."]
code: def __init__(self, *transforms):
      super(ChainTransform, self).__init__()
      self._transforms = []
      self._simplified = None
      self._null_transform = NullTransform()
      nmap = self._null_transform.shader_map()
  
      # ChainTransform does not have shader maps
      self._shader_map = FunctionChain("transform_map_chain", [nmap])
      self._shader_imap = FunctionChain("transform_imap_chain", [nmap])
  
      # Set input transforms
      trs = []
      for tr in transforms:
          if isinstance(tr, (tuple, list)):
              trs.extend(tr)
          else:
              trs.append(tr)
      self.transforms = trs
  
imports: from __future__ import division
  from ..shaders import FunctionChain
  from .base_transform import BaseTransform
  from .linear import NullTransform
label_desc: Use image node_id 1 to create a new ChainTransform object from inherited base classes: BaseTransform with example: obj = ChainTransform()