      1 /**
      2  * Hilo
      3  * Copyright 2015 alibaba.com
      4  * Licensed under the MIT License
      5  */
      6
      7 /**
      8  * @class 渲染器抽象基类。
      9  * @param {Object} properties 创建对象的属性参数。可包含此类所有可写属性。
     10  * @module hilo/renderer/Renderer
     11  * @requires hilo/core/Class
     12  * @requires hilo/util/util
     13  * @property {Object} canvas 渲染器对应的画布。它可能是一个普通的DOM元素，比如div，也可以是一个canvas画布元素。只读属性。
     14  * @property {Object} stage 渲染器对应的舞台。只读属性。
     15  * @property {String} renderType 渲染方式。只读属性。
     16  */
     17 var Renderer = Class.create(/** @lends Renderer.prototype */{
     18     constructor: function(properties){
     19         properties = properties || {};
     20         util.copy(this, properties, true);
     21     },
     22
     23     renderType:null,
     24     canvas: null,
     25     stage: null,
     26     blendMode:'source-over',
     27
     28     /**
     29      * 为开始绘制可视对象做准备。需要子类来实现。
     30      * @param {View} target 要绘制的可视对象。
     31      */
     32     startDraw: function(target){ },
     33
     34     /**
     35      * 绘制可视对象。需要子类来实现。
     36      * @param {View} target 要绘制的可视对象。
     37      */
     38     draw: function(target){ },
     39
     40     /**
     41      * 结束绘制可视对象后的后续处理方法。需要子类来实现。
     42      * @param {View} target 要绘制的可视对象。
     43      */
     44     endDraw: function(target){ },
     45
     46     /**
     47      * 对可视对象进行变换。需要子类来实现。
     48      */
     49     transform: function(){ },
     50
     51     /**
     52      * 隐藏可视对象。需要子类来实现。
     53      */
     54     hide: function(){ },
     55
     56     /**
     57      * 从画布中删除可视对象。注意：不是从stage中删除对象。需要子类来实现。
     58      * @param {View} target 要删除的可视对象。
     59      */
     60     remove: function(target){ },
     61
     62     /**
     63      * 清除画布指定区域。需要子类来实现。
     64      * @param {Number} x 指定区域的x轴坐标。
     65      * @param {Number} y 指定区域的y轴坐标。
     66      * @param {Number} width 指定区域的宽度。
     67      * @param {Number} height 指定区域的高度。
     68      */
     69     clear: function(x, y, width, height){ },
     70
     71     /**
     72      * 改变渲染器的画布大小。
     73      * @param {Number} width 指定渲染画布新的宽度。
     74      * @param {Number} height 指定渲染画布新的高度。
     75      */
     76     resize: function(width, height){ }
     77
     78 });