      1 /**
      2  * Hilo
      3  * Copyright 2015 alibaba.com
      4  * Licensed under the MIT License
      5  */
      6
      7 /**
      8  * <iframe src='../../../examples/Bitmap.html?noHeader' width = '300' height = '200' scrolling='no'></iframe>
      9  * <br/>
     10  * 使用示例:
     11  * <pre>
     12  * var bmp = new Hilo.Bitmap({image:imgElem, rect:[0, 0, 100, 100]});
     13  * stage.addChild(bmp);
     14  * </pre>
     15  * @class Bitmap类表示位图图像类。
     16  * @augments View
     17  * @param {Object} properties 创建对象的属性参数。可包含此类所有可写属性。此外还包括：
     18  * <ul>
     19  * <li><b>image</b> - 位图所在的图像image。必需。</li>
     20  * <li><b>rect</b> - 位图在图像image中矩形区域。可选。</li>
     21  * <li><b>crossOrigin</b> - 是否设置crossOrigin。默认否。</li>
     22  * </ul>
     23  * @module hilo/view/Bitmap
     24  * @requires hilo/core/Hilo
     25  * @requires hilo/core/Class
     26  * @requires hilo/view/View
     27  * @requires hilo/view/Drawable
     28  */
     29  var Bitmap = Class.create(/** @lends Bitmap.prototype */{
     30     Extends: View,
     31     constructor: function(properties){
     32         properties = properties || {};
     33         this.id = this.id || properties.id || Hilo.getUid("Bitmap");
     34         Bitmap.superclass.constructor.call(this, properties);
     35
     36         this.drawable = new Drawable(properties);
     37
     38         //init width and height
     39         if(!this.width || !this.height){
     40             var rect = this.drawable.rect;
     41             if(rect){
     42                 this.width = rect[2];
     43                 this.height = rect[3];
     44             }
     45         }
     46     },
     47
     48     /**
     49      * 设置位图的图片。
     50      * @param {Image|String} image 图片对象或地址。
     51      * @param {Array} rect 指定位图在图片image的矩形区域。可选。
     52      * @param {Boolean} crossOrigin 是否设置 crossOrigin，默认否。
     53      * @returns {Bitmap} 位图本身。
     54      */
     55     setImage: function(image, rect, crossOrigin){
     56         this.drawable.init({image:image, rect:rect, crossOrigin:crossOrigin});
     57         if(rect){
     58             this.width = rect[2];
     59             this.height = rect[3];
     60         }
     61         else if(!this.width && !this.height){
     62             rect = this.drawable.rect;
     63             if(rect){
     64                 this.width = rect[2];
     65                 this.height = rect[3];
     66             }
     67         }
     68         return this;
     69     }
     70  });
     71