チェンジセット 3834
- コミット日時:
- 2010/04/22 23:51:16 (3 年前)
- ファイル:
-
- as3/gunyarapaint/branches/gunyarapaint/compat/src/gunyarapaint.mxml (更新) (2 diffs)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/LayerBitmapCollection.as (更新) (4 diffs)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/Painter.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/test/src/org/libspark/gunyarapaint/framework/LayerBitmapContainerTest.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/test/src/org/libspark/gunyarapaint/framework/PainterTest.as (更新) (1 diff)
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
as3/gunyarapaint/branches/gunyarapaint/compat/src/gunyarapaint.mxml
r3823 r3834 159 159 bitmapData.setPixels(new Rectangle(0, 0, w, h), bitmapBytes); 160 160 dataBytes.readBytes(m_bytes); 161 m_recorder.l oad(bitmapData, metadata);161 m_recorder.layers.load(bitmapData, metadata); 162 162 m_bytes.position = m_bytes.length; 163 163 m_module.reset(); … … 174 174 var metadata:Object = {}; 175 175 var rect:Rectangle = bitmapData.rect; 176 m_recorder. save(bitmapData, metadata);176 m_recorder.layers.save(bitmapData, metadata); 177 177 bytes.endian = Endian.BIG_ENDIAN; 178 178 bytes.writeObject(m_bytes); as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/LayerBitmapCollection.as
r3833 r3834 8 8 import flash.events.Event; 9 9 import flash.events.IEventDispatcher; 10 import flash.geom.Point; 11 import flash.geom.Rectangle; 10 12 11 13 import org.libspark.gunyarapaint.framework.errors.AddLayerError; … … 41 43 layer.name = TranslatorRegistry.tr("Background"); 42 44 composited = new BitmapData(width, height, true, 0x0); 43 addLayer(layer); 45 m_layers.push(layer); 46 m_sprite.addChild(layer.displayObject); 44 47 } 45 48 … … 63 66 compositeAll(); 64 67 resetLayersIndex(); 65 }66 67 /**68 * レイヤーオブジェクトを追加する69 *70 * @param layer レイヤーオブジェクト71 */72 public function addLayer(layer:LayerBitmap):void73 {74 if (m_layers.length >= MAX)75 throw new AddLayerError(MAX);76 m_layers.push(layer);77 m_sprite.addChild(layer.displayObject);78 68 } 79 69 … … 245 235 } 246 236 237 /** 238 * 連結されたレイヤー画像とメタデータから復元する 239 * 240 * @param layerBitmaps 縦に連結されたレイヤー画像 241 * @param metadata メタデータ 242 */ 243 public function load(layerBitmap:BitmapData, metadata:Object):void 244 { 245 var width:uint = metadata.width; 246 var height:uint = metadata.height; 247 var layersInfo:Array = metadata.layer_infos; 248 var layerCount:uint = layerBitmap.height / height; 249 var destination:Point = new Point(0, 0); 250 var rectangle:Rectangle = new Rectangle(0, 0, width, height); 251 clear(); 252 for (var i:uint = 0; i < layerCount; i++) { 253 var bitmapData:BitmapData = new BitmapData(width, height); 254 rectangle.y = i * height; 255 bitmapData.copyPixels(layerBitmap, rectangle, destination); 256 var layer:LayerBitmap = new LayerBitmap(bitmapData); 257 layer.fromJSON(layersInfo[i]); 258 m_layers.push(layer); 259 m_sprite.addChild(layer.displayObject); 260 } 261 } 262 263 /** 264 * 連結されたレイヤー画像とメタデータを保存する 265 * 266 * @param layerBitmaps 縦に連結されたレイヤー画像 267 * @param metadata メタデータ 268 */ 269 public function save(layerBitmap:BitmapData, metadata:Object):void 270 { 271 var layersInfo:Array = []; 272 var layerCount:uint = layerBitmap.height / height; 273 var rectangle:Rectangle = new Rectangle(0, 0, width, height); 274 var destination:Point = new Point(0, 0); 275 layerBitmap.lock(); 276 for (var i:uint = 0; i < layerCount; i++) { 277 var layer:LayerBitmap = m_layers[i]; 278 destination.y = i * height; 279 layerBitmap.copyPixels(layer.bitmapData, rectangle, destination); 280 layersInfo.push(layer.toJSON()); 281 } 282 layerBitmap.unlock(); 283 metadata.width = width; 284 metadata.height = height; 285 metadata.layer_infos = layersInfo; 286 } 287 247 288 public function addEventListener(type:String, 248 289 listener:Function, as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/Painter.as
r3832 r3834 130 130 131 131 /** 132 * 連結されたレイヤー画像とメタデータから復元する133 *134 * @param layerBitmaps 縦に連結されたレイヤー画像135 * @param metadata メタデータ136 */137 public function load(layerBitmap:BitmapData, metadata:Object):void138 {139 var width:uint = metadata.width;140 var height:uint = metadata.height;141 var layersInfo:Array = metadata.layer_infos;142 var layerCount:uint = layerBitmap.height / height;143 var destination:Point = new Point(0, 0);144 var rectangle:Rectangle = new Rectangle(0, 0, width, height);145 m_layers.clear();146 for (var i:uint = 0; i < layerCount; i++) {147 var bitmapData:BitmapData = new BitmapData(width, height);148 rectangle.y = i * height;149 bitmapData.copyPixels(layerBitmap, rectangle, destination);150 var layer:LayerBitmap = new LayerBitmap(bitmapData);151 layer.fromJSON(layersInfo[i]);152 m_layers.addLayer(layer);153 }154 }155 156 /**157 * 連結されたレイヤー画像とメタデータを保存する158 *159 * @param layerBitmaps 縦に連結されたレイヤー画像160 * @param metadata メタデータ161 */162 public function save(layerBitmap:BitmapData, metadata:Object):void163 {164 var layersInfo:Array = [];165 var layerCount:uint = layerBitmap.height / height;166 var rectangle:Rectangle = new Rectangle(0, 0, width, height);167 var destination:Point = new Point(0, 0);168 layerBitmap.lock();169 for (var i:uint = 0; i < layerCount; i++) {170 var layer:LayerBitmap = m_layers.at(i);171 destination.y = i * height;172 layerBitmap.copyPixels(layer.bitmapData, rectangle, destination);173 layersInfo.push(layer.toJSON());174 }175 layerBitmap.unlock();176 metadata.width = width;177 metadata.height = height;178 metadata.layer_infos = layersInfo;179 }180 181 /**182 132 * 現在位置を変更する 183 133 * as3/gunyarapaint/branches/gunyarapaint/test/src/org/libspark/gunyarapaint/framework/LayerBitmapContainerTest.as
r3781 r3834 91 91 92 92 [Test(expects="org.libspark.gunyarapaint.framework.errors.AddLayerError")] 93 public function 規定数以上のレイヤーを追加すると例外を送出する():void94 {95 var lc:LayerBitmapCollection = layerContainer;96 var max:uint = LayerBitmapCollection.MAX;97 for (var i:uint = 0; i < max; i++) {98 var layer:LayerBitmap = new LayerBitmap(new BitmapData(WIDTH, HEIGHT));99 lc.addLayer(layer);100 }101 }102 103 [Test(expects="org.libspark.gunyarapaint.framework.errors.AddLayerError")]104 93 public function 規定数以上のレイヤーをコピーすると例外を送出する():void 105 94 { as3/gunyarapaint/branches/gunyarapaint/test/src/org/libspark/gunyarapaint/framework/PainterTest.as
r3832 r3834 102 102 var src:LayerBitmap = painter.layers.at(2); 103 103 var layers:BitmapData = painter.newLayerBitmapData; 104 painter. save(layers, metadata);104 painter.layers.save(layers, metadata); 105 105 Assert.assertEquals(metadata.width, painter.width); 106 106 Assert.assertEquals(metadata.height, painter.height); 107 107 Assert.assertEquals(3, metadata.layer_infos.length); 108 108 var painter2:Painter = new Painter(3, 1, Painter.PAINTER_LOG_VERSION, new FakePaintEngine()); 109 painter2.l oad(layers, metadata);109 painter2.layers.load(layers, metadata); 110 110 Assert.assertEquals(3, painter2.layers.count); 111 111 var dst:LayerBitmap = painter2.layers.at(2);

