       opacity
 
     isChanging: -> @__stateChangeQueued
-    # isFilter:      -> false
+    isFilter:      -> false
     # filterSource:  -> @_filterSource || @_parent
     rootElement:   -> @_rootElement ||= if @_parent then @_parent.getRootElement() else @
     bitmapFactory: -> @_bitmapFactory || @getCanvasElement()?.bitmapFactory || Canvas.Bitmap


  _initComputedFields: ->
    @_elementSpaceDrawArea = null
    # @_filterDescendants = []
    # @_filterSource = null


    # re-use existing bitmap, if possible
    d2eMatrix = Matrix.translateXY(-elementSpaceDrawArea.x, -elementSpaceDrawArea.y).scale(cacheScale).inv
    if d2eMatrix.eq(@_drawCacheToElementMatrix) && cacheSpaceDrawArea.size.eq @_drawCacheBitmap?.size
      drawCacheManager.useDrawCache @
      return unless @_dirtyDrawAreas || @_redrawAll
    else
      {size} = cacheSpaceDrawArea.size
      if (unioned = @_drawCacheBitmap?.size.max size) && unioned.area < size.area * 2
        size = unioned
      @_clearDrawCache()
      @_drawCacheBitmap = drawCacheManager.allocateCacheBitmap @, size
      @_dirtyDrawAreas = null
      @_redrawAll = true

