docs: function SystemRenderer(system, width, height, options)
  {
      EventEmitter.call(this);
  
      utils.sayHello(system);
  
      // prepare options
      if (options)
      {
          for (var i in CONST.DEFAULT_RENDER_OPTIONS)
          {
              if (typeof options[i] === 'undefined')
              {
                  options[i] = CONST.DEFAULT_RENDER_OPTIONS[i];
              }
          }
      }
      else
      {
          options = CONST.DEFAULT_RENDER_OPTIONS;
      }
  
      /**
       * The type of the renderer.
       *
       * @member {RENDERER_TYPE}
       * @default CONT.RENDERER_TYPE.UNKNOWN
       */
      this.type = CONST.RENDERER_TYPE.UNKNOWN;
  
      /**
       * The width of the canvas view
       *
       * @member {number}
       * @default 800
       */
      this.width = width || 800;
  
      /**
       * The height of the canvas view
       *
       * @member {number}
       * @default 600
       */
      this.height = height || 600;
  
      /**
       * The canvas element that everything is drawn to
       *
       * @member {HTMLCanvasElement}
       */
      this.view = options.view || document.createElement('canvas');
  
      /**
       * The resolution of the renderer
       *
       * @member {number}
       * @default 1
       */
      this.resolution = options.resolution;
  
      /**
       * Whether the render view is transparent
       *
       * @member {boolean}
       */
      this.transparent = options.transparent;
  
      /**
       * Whether the render view should be resized automatically
       *
       * @member {boolean}
       */
      this.autoResize = options.autoResize || false;
  
      /**
       * Tracks the blend modes useful for this renderer.
       *
       * @member {object<string, mixed>}
       */
      this.blendModes = null;
  
      /**
       * The value of the preserveDrawingBuffer flag affects whether or not the contents of the stencil buffer is retained after rendering.
       *
       * @member {boolean}
       */
      this.preserveDrawingBuffer = options.preserveDrawingBuffer;
  
      /**
       * This sets if the CanvasRenderer will clear the canvas or not before the new render pass.
       * If the scene is NOT transparent Pixi will use a canvas sized fillRect operation every frame to set the canvas background color.
       * If the scene is transparent Pixi will use clearRect to clear the canvas every frame.
       * Disable this by setting this to false. For example if your game has a canvas filling background image you often don't need this set.
       *
       * @member {boolean}
       * @default
       */
      this.clearBeforeRender = options.clearBeforeRender;
  
      /**
       * The background color as a number.
       *
       * @member {number}
       * @private
       */
      this._backgroundColor = 0x000000;
  
      /**
       * The background color as an [R, G, B] array.
       *
       * @member {number[]}
       * @private
       */
      this._backgroundColorRgb = [0, 0, 0];
  
      /**
       * The background color as a string.
       *
       * @member {string}
       * @private
       */
      this._backgroundColorString = '#000000';
  
      this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter
  
      /**
       * This temporary display object used as the parent of the currently being rendered item
       * @member {DisplayObject}
       * @private
       */
      this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]};
  
      //
      this._lastObjectRendered = this._tempDisplayObjectParent;
  }