チェンジセット 3505: as3/gunyarapaint/branches
- コミット日時:
- 2010/03/09 01:40:14 (3 年前)
- ファイル:
-
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/CanvasContext.as (更新) (9 diffs)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/PaintEngine.as (更新) (5 diffs)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/PaintEngineV1.as (移動) (as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/PainterV1.as から 移動) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/PaintEngineV2.as (移動) (as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/PainterV2.as から 移動) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/Player.as (更新) (3 diffs)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/Recorder.as (更新) (2 diffs)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/UndoStack.as (更新) (5 diffs)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/BeginFillCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/CompositeCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/DrawCircleCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/EndFillCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/FloodFillCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/HorizontalMirrorCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/LineToCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/MoveToCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/PenCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/PixelCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/VerticalMirrorCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/CopyLayerCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/CreateLayerCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/MergeLayerCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/RemoveLayerCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/SetLayerAlphaCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/SetLayerBlendModeCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/SetLayerIndexCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/SetLayerVisibleCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/SwapLayerCommand.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/CircleModule.as (更新) (4 diffs)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/DrawModule.as (更新) (5 diffs)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/DropperModule.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/EllipseModule.as (更新) (4 diffs)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/FreeHandModule.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/LineModule.as (更新) (4 diffs)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/PixelModule.as (更新) (1 diff)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/RectModule.as (更新) (4 diffs)
- as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/RoundRectModule.as (更新) (2 diffs)
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/CanvasContext.as
r3501 r3505 1 1 package org.libspark.gunyarapaint.framework 2 2 { 3 import flash.display.BitmapData; 4 import flash.display.BlendMode; 3 5 import flash.display.Shape; 6 import flash.display.Sprite; 4 7 import flash.events.EventDispatcher; 8 import flash.geom.Matrix; 9 import flash.geom.Point; 10 import flash.geom.Rectangle; 5 11 6 12 import org.libspark.gunyarapaint.framework.errors.NotSupportedVersionError; … … 10 16 * 再生及び記録のための共通基盤 11 17 * 18 * @todo: Painter の実装を取り入れる 12 19 */ 13 20 public class CanvasContext extends EventDispatcher … … 31 38 public static const PAINTER_VERSION_STRING:String = "ver." + PAINTER_VERSION; 32 39 33 public function CanvasContext() 34 { 35 super(null); 40 public function CanvasContext(width:uint, height:uint, paintEngine:PaintEngine) 41 { 42 m_coordinate = new Point(); 43 m_layers = new LayerBitmapCollection(width, height); 44 m_drawingSprite = new Sprite(); 45 m_drawingSprite.mouseEnabled = false; 46 m_horizontalMirrorMatrix = new Matrix(-1, 0, 0, 1, width, 0); 47 m_verticalMirrorMatrix = new Matrix(1, 0, 0, -1, 0, height); 36 48 m_version = PAINTER_LOG_VERSION; 37 49 } … … 42 54 public function undo():void 43 55 { 44 m_undo.undo( m_painter);56 m_undo.undo(this); 45 57 if (hasEventListener(UndoEvent.UNDO)) 46 58 dispatchEvent(new UndoEvent(UndoEvent.UNDO, m_undo.undoCount, m_undo.redoCount)); … … 52 64 public function redo():void 53 65 { 54 m_undo.redo( m_painter);66 m_undo.redo(this); 55 67 if (hasEventListener(UndoEvent.REDO)) 56 68 dispatchEvent(new UndoEvent(UndoEvent.REDO, m_undo.undoCount, m_undo.redoCount)); … … 62 74 public function pushUndo():void 63 75 { 64 m_undo.push( m_painter);76 m_undo.push(this); 65 77 if (hasEventListener(UndoEvent.PUSH)) 66 78 dispatchEvent(new UndoEvent(UndoEvent.PUSH, m_undo.undoCount, m_undo.redoCount)); … … 82 94 83 95 /** 84 * Painter オブジェクトを作成する 85 * 86 * @param width 画像の幅 87 * @param height 画像の高さ 88 * @param version ペイントログのバージョン 89 */ 90 protected function createPainter(width:int, height:int, version:uint):void 91 { 92 var engine:PaintEngine = new PaintEngine(new Shape()); 96 * 連結されたレイヤー画像とメタデータから復元する 97 * 98 * @param layerBitmaps 縦に連結されたレイヤー画像 99 * @param metadata メタデータ 100 */ 101 public function restore(layerBitmaps:BitmapData, metadata:Object):void 102 { 103 var width:uint = metadata.width; 104 var height:uint = metadata.height; 105 var layerCount:uint = layerBitmaps.height / height; 106 var destination:Point = new Point(0, 0); 107 var rectangle:Rectangle = new Rectangle(0, 0, width, height); 108 var sprite:Sprite = m_layers.spriteToView; 109 m_layers.clear(); 110 for (var i:uint = 0; i < layerCount; i++) { 111 var bitmapData:BitmapData = new BitmapData(width, height); 112 bitmapData.copyPixels(layerBitmaps, rectangle, destination); 113 rectangle.y = i * height; 114 var layerBitmap:LayerBitmap = new LayerBitmap(bitmapData); 115 m_layers.layers.push(layerBitmap); 116 sprite.addChild(layerBitmap); 117 } 118 } 119 120 /** 121 * 現在位置を変更する 122 * 123 * <p> 124 * PainterEngine クラスにある moveTo の委譲 125 * </p> 126 * 127 * @param x 移動先となる X 座標 128 * @param y 移動先となる Y 座標 129 */ 130 public function moveTo(x:Number, y:Number):void 131 { 132 m_paintEngine.moveTo(x, y); 133 } 134 135 /** 136 * 現在位置から指定された位置まで線を描写する 137 * 138 * <p> 139 * PainterEngine クラスにある lineTo の委譲 140 * </p> 141 * 142 * @param x 描写先となる X 座標 143 * @param y 描写先となる Y 座標 144 */ 145 public function lineTo(x:Number, y:Number):void 146 { 147 m_paintEngine.lineTo(x, y); 148 } 149 150 /** 151 * 矩形を描写する 152 * 153 * <p> 154 * PainterEngine クラスにある drawRect の委譲 155 * </p> 156 * 157 * @param x 基準点となる X 座標 158 * @param y 基準点となる Y 座標 159 * @param width 幅 160 * @param height 高さ 161 */ 162 public function drawRect(x:Number, y:Number, 163 width:uint, height:uint):void 164 { 165 m_paintEngine.drawRect(x, y, width, height); 166 } 167 168 /** 169 * 楕円を描写する 170 * 171 * <p> 172 * PainterEngine クラスにある drawEllipse の委譲 173 * </p> 174 * 175 * @param x 基準点となる X 座標 176 * @param y 基準点となる Y 座標 177 * @param width 幅 178 * @param height 高さ 179 */ 180 public function drawEllipse(x:Number, y:Number, 181 width:uint, height:uint):void 182 { 183 m_paintEngine.drawEllipse(x, y, width, height); 184 } 185 186 /** 187 * 塗りつぶしを開始する 188 * 189 * <p> 190 * PainterEngine クラスにある beginFill の委譲 191 * </p> 192 * 193 * @param color 塗りつぶす色 194 * @param alpha 透明度 195 */ 196 public function beginFill(color:uint, alpha:Number):void 197 { 198 m_paintEngine.beginFill(color, alpha); 199 } 200 201 /** 202 * 現在の位置から円弧を描写する 203 * 204 * <p> 205 * PainterEngine クラスにある drawCircle の委譲 206 * </p> 207 * 208 * @param radius 半径 209 */ 210 public function drawCircle(radius:Number):void 211 { 212 m_paintEngine.drawCircle(radius); 213 } 214 215 /** 216 * 塗りつぶしを終了する 217 * 218 * <p> 219 * PainterEngine クラスにある endFill の委譲 220 * </p> 221 * 222 */ 223 public function endFill():void 224 { 225 m_paintEngine.endFill(); 226 } 227 228 /** 229 * ペンオブジェクトを初期状態にリセットする 230 * 231 * <p> 232 * PainterEngine クラスにある resetPen の委譲 233 * </p> 234 * 235 */ 236 public function resetPen():void 237 { 238 m_paintEngine.resetPen(); 239 } 240 241 /** 242 * 描写中の内容を消去する 243 * 244 * <p> 245 * PainterEngine クラスにある clear の委譲 246 * </p> 247 * 248 */ 249 public function clear():void 250 { 251 m_paintEngine.clear(); 252 } 253 254 /** 255 * PainterEngine クラスに描写された中身を現在のレイヤーに反映させる 256 * 257 * <p> 258 * Pen クラスのブレンドモードを適用する 259 * </p> 260 * 261 */ 262 public function composite():void 263 { 264 // undoBuffer に入っているLayerBitmapを上書きしない為にコピーしてから作業する 265 // これは floodFill 及び setPixel も同様 266 m_layers.currentLayer.compositeFrom( 267 m_paintEngine.shape, 268 m_paintEngine.pen.blendMode 269 ); 270 m_layers.compositeAll(); 271 } 272 273 /** 274 * 塗りつぶしを行う 275 * 276 * <p> 277 * PainterEngine クラスの現在位置と Pen クラスの色を適用する 278 * </p> 279 * 280 */ 281 public function floodFill():void 282 { 283 m_layers.currentLayer.floodFill( 284 m_paintEngine.x, 285 m_paintEngine.y, 286 m_paintEngine.pen.argb 287 ); 288 m_layers.compositeAll(); 289 } 290 291 /** 292 * 1 ピクセルを描写する 293 * 294 * <p> 295 * 現在の Pen クラスの色を適用する 296 * </p> 297 * 298 * @param x 描写先となる X 座標 299 * @param y 描写先となる Y 座標 300 */ 301 public function setPixel(x:int, y:int):void 302 { 303 m_layers.currentLayer.setPixel(x, y, m_paintEngine.pen.argb); 304 m_layers.compositeAll(); 305 } 306 307 /** 308 * 特定のピクセルの色を取得する(不透明度は取得しない) 309 * 310 * @param x 取得先となる X 座標 311 * @param y 取得先となる Y 座標 312 * @return RGB 形式の色の値 313 */ 314 public function getPixel(x:int, y:int):uint 315 { 316 // AAAARRRRGGGGBBBB 317 var alpha:uint = m_layers.composited.getPixel32(x, y) >> 24 && 0xff; 318 return alpha > 0 ? m_layers.composited.getPixel(x, y) : 0xffffff; 319 } 320 321 /** 322 * 特定のピクセルの色を取得する 323 * 324 * @param x 取得先となる X 座標 325 * @param y 取得先となる Y 座標 326 * @return ARGB 形式の色の値 327 */ 328 public function getPixel32(x:int, y:int):uint 329 { 330 return layers.composited.getPixel32(x, y); 331 } 332 333 /** 334 * レイヤーの可視状態を変更する 335 * 336 * @param index レイヤー番号 337 * @param visible 可視であるかどうか 338 */ 339 public function setVisibleAt(index:int, visible:Boolean):void 340 { 341 m_layers[index].visible = visible; 342 m_layers.compositeAll(); 343 } 344 345 /** 346 * 指定されたレイヤーに対して水平方向に鏡面処理を実行する 347 * 348 * @param index レイヤー番号 349 */ 350 public function transformWithHorizontalMirrorAt(index:int):void 351 { 352 transformFromMatrixAt(index, m_horizontalMirrorMatrix); 353 } 354 355 /** 356 * 指定されたレイヤーに対して垂直方向に鏡面処理を実行する 357 * 358 * @param index レイヤー番号 359 */ 360 public function transformWithVerticalMirrorAt(index:int):void 361 { 362 transformFromMatrixAt(index, m_verticalMirrorMatrix); 363 } 364 365 /** 366 * 描写開始を宣言する 367 * 368 * <p> 369 * 全てのレイヤーに対してではなく、現在のレイヤーのみにブレンドモードが 370 * 適用されるように Sprite の変更が行われる。 371 * </p> 372 */ 373 public function startDrawingSession():void 374 { 375 if (m_tempLayer == null) { 376 var currentLayer:LayerBitmap = m_layers.currentLayer; 377 var blendMode:String = currentLayer.blendMode; 378 m_paintEngine.resetPen(); 379 m_drawingSprite.blendMode = 380 blendMode == BlendMode.NORMAL ? BlendMode.LAYER : blendMode; 381 m_drawingSprite.alpha = currentLayer.alpha; 382 m_tempLayer = currentLayer.clone(false); 383 m_tempLayer.blendMode = BlendMode.NORMAL; 384 m_tempLayer.alpha = 1.0; 385 m_drawingSprite.addChild(m_tempLayer); 386 m_drawingSprite.addChild(m_paintEngine.shape); 387 var sprite:Sprite = m_layers.spriteToView; 388 sprite.removeChild(currentLayer); 389 sprite.addChildAt(m_drawingSprite, m_layers.currentIndex); 390 } 391 } 392 393 /** 394 * 描写終了を宣言する 395 * 396 */ 397 public function stopDrawingSession():void 398 { 399 if (m_tempLayer != null) { 400 var sprite:Sprite = m_layers.spriteToView; 401 var currentLayer:LayerBitmap = m_layers.currentLayer; 402 var blendMode:String = m_drawingSprite.blendMode; 403 currentLayer.blendMode = 404 blendMode == BlendMode.LAYER ? BlendMode.NORMAL : blendMode; 405 currentLayer.alpha = m_drawingSprite.alpha; 406 sprite.removeChild(m_drawingSprite); 407 sprite.addChildAt(currentLayer, m_layers.currentIndex); 408 m_paintEngine.clear(); 409 m_drawingSprite.removeChild(m_tempLayer); 410 m_drawingSprite.removeChild(m_paintEngine.shape); 411 m_tempLayer = null; 412 } 413 } 414 415 public function correctCoordinate(coordinate:Point):void 416 { 417 m_paintEngine.correctCoordinate(coordinate); 418 } 419 420 protected function createPaintEngine(version:uint):PaintEngine 421 { 422 var shape:Shape = new Shape(); 93 423 if (version > 0 && version <= 10) { 94 m_painter = new PainterV1(width, height, engine);424 return new PaintEngineV1(shape); 95 425 } 96 426 else if (version > 10 && version <= 21) { 97 m_painter = new PainterV2(width, height, engine);427 return new PaintEngineV2(shape); 98 428 } 99 429 else { 100 430 throw new NotSupportedVersionError(version.toString()); 101 431 } 102 m_width = width; 103 m_height = height; 104 m_version = version; 105 } 106 107 /** 108 * お絵描きを実行するオブジェクトを返す 109 * 110 * @return お絵描きを実行するオブジェクト 111 */ 112 public function get painter():Painter 113 { 114 return m_painter; 432 } 433 434 private function transformFromMatrixAt(index:int, matrix:Matrix):void 435 { 436 if (index === 0xff) { 437 var c:uint = m_layers.count; 438 for (var i:uint = 0; i < c; i++) { 439 m_layers.at(i).applyMatrix(matrix); 440 } 441 } 442 else { 443 m_layers.currentLayer.applyMatrix(matrix); 444 } 445 m_layers.compositeAll(); 446 } 447 448 internal function saveState():Object 449 { 450 var count:uint = m_layers.count; 451 var layers:Vector.<LayerBitmap> = new Vector.<LayerBitmap>( 452 count, true 453 ); 454 for (var i:uint = 0; i < count; i++) { 455 var layer:LayerBitmap = m_layers.layers[i].clone(); 456 layers[i] = layer; 457 } 458 var undoData:Object = {}; 459 undoData.index = m_layers.currentIndex; 460 undoData.layers = layers; 461 return undoData; 462 } 463 464 internal function restoreState(undoData:Object):void 465 { 466 var i:uint = 0; 467 m_layers.clear(); 468 var count:uint = undoData.layers.length; 469 var sprite:Sprite = m_layers.spriteToView; 470 for (i = 0; i < count; i++) { 471 var layer:LayerBitmap = undoData.layers[i].clone(); 472 m_layers.layers.push(layer); 473 sprite.addChild(layer); 474 } 475 m_layers.currentIndex = undoData.index; 476 m_layers.compositeAll(); 477 } 478 479 /** 480 * レイヤーオブジェクトを返す 481 * 482 */ 483 public function get layers():LayerBitmapCollection 484 { 485 return m_layers; 486 } 487 488 /** 489 * スプライトオブジェクトを返す 490 * 491 */ 492 public function get view():Sprite 493 { 494 return m_layers.spriteToView; 495 } 496 497 /** 498 * ペンオブジェクトを返す 499 * 500 */ 501 public function get pen():Pen 502 { 503 return m_paintEngine.pen; 115 504 } 116 505 … … 146 535 147 536 /** 537 * 現在のレイヤーの透明度を変更する 538 * 539 */ 540 public function set currentLayerAlpha(value:Number):void 541 { 542 m_layers.currentLayer.alpha = value; 543 m_layers.compositeAll(); 544 } 545 546 /** 547 * 現在のブレンドモードを変更する 548 * 549 */ 550 public function set currentLayerBlendMode(value:String):void 551 { 552 m_layers.currentLayer.blendMode = value; 553 m_layers.compositeAll(); 554 } 555 556 /** 557 * ペンオブジェクトを設定する 558 * 559 */ 560 public function set pen(value:Pen):void 561 { 562 m_paintEngine.pen = value; 563 } 564 565 /** 148 566 * UndoStack オブジェクトを設定する 149 567 * … … 155 573 } 156 574 575 private var m_paintEngine:PaintEngine; 576 private var m_layers:LayerBitmapCollection; 577 private var m_horizontalMirrorMatrix:Matrix; 578 private var m_verticalMirrorMatrix:Matrix; 579 private var m_drawingSprite:Sprite; 580 private var m_tempLayer:LayerBitmap; 581 private var m_shouldCopyBitmap:Boolean; 157 582 private var m_version:uint; 158 private var m_painter:Painter;159 583 private var m_undo:UndoStack; 584 private var m_coordinate:Point; 160 585 private var m_width:uint; 161 586 private var m_height:uint; as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/PaintEngine.as
r3501 r3505 3 3 import flash.display.Graphics; 4 4 import flash.display.Shape; 5 import flash.errors.IllegalOperationError; 5 6 import flash.geom.Point; 6 7 … … 8 9 * 実際に描写を行う 9 10 * 11 * @todo correctCoordinate (もともとroundPixel という名前) を仮想メソッドとして実装する 10 12 */ 11 13 public class PaintEngine … … 36 38 public function moveTo(x:Number, y:Number):void 37 39 { 38 m_graphics.moveTo(x, y);39 40 m_coordinate.x = x; 40 41 m_coordinate.y = y; 42 correctCoordinate(m_coordinate); 43 m_graphics.moveTo(m_coordinate.x, m_coordinate.y); 41 44 } 42 45 … … 49 52 public function lineTo(x:Number, y:Number):void 50 53 { 51 m_graphics.lineTo(x, y);52 54 m_coordinate.x = x; 53 55 m_coordinate.y = y; 56 correctCoordinate(m_coordinate); 57 m_graphics.lineTo(m_coordinate.x, m_coordinate.y); 54 58 } 55 59 … … 114 118 { 115 119 m_graphics.endFill(); 120 } 121 122 public function correctCoordinate(point:Point):void 123 { 116 124 } 117 125 as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/PaintEngineV1.as
r3434 r3505 1 1 package org.libspark.gunyarapaint.framework 2 2 { 3 internal final class PainterV1 extends Painter 3 import flash.display.Shape; 4 import flash.geom.Point; 5 6 internal final class PaintEngineV1 extends PaintEngine 4 7 { 5 public function Paint erV1(width:int, height:int, engine:PaintEngine)8 public function PaintEngineV1(shape:Shape) 6 9 { 7 super( width, height, engine);10 super(shape); 8 11 } 9 12 10 public override function roundPixel(n:Number):Number13 public override function correctCoordinate(coordinate:Point):void 11 14 { 12 return int(n) + ((m_paintEngine.pen.thickness % 2) ? 0.5 : 0); 15 coordinate.x = int(coordinate.x + 0.5); 16 coordinate.y = int(coordinate.y + 0.5); 13 17 } 14 18 } as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/PaintEngineV2.as
r3434 r3505 1 1 package org.libspark.gunyarapaint.framework 2 2 { 3 internal final class PainterV2 extends Painter 3 import flash.display.Shape; 4 import flash.geom.Point; 5 6 internal final class PaintEngineV2 extends PaintEngine 4 7 { 5 public function Paint erV2(width:int, height:int, engine:PaintEngine)8 public function PaintEngineV2(shape:Shape) 6 9 { 7 super( width, height, engine);10 super(shape); 8 11 } 9 12 10 public override function roundPixel(n:Number):Number13 public override function correctCoordinate(coordinate:Point):void 11 14 { 12 return int(n + 0.5); 15 var aux:Number = (pen.thickness % 2) ? 0.5 : 0; 16 coordinate.x = int(coordinate.x) + aux; 17 coordinate.y = int(coordinate.y) + aux; 13 18 } 14 19 } as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/Player.as
r3501 r3505 1 1 package org.libspark.gunyarapaint.framework 2 2 { 3 import flash.display.BitmapData;4 3 import flash.utils.ByteArray; 5 4 import flash.utils.clearInterval; … … 16 15 public final class Player extends CanvasContext 17 16 { 18 public function Player( )17 public function Player(parser:Parser) 19 18 { 20 super(); 19 var data:Object = {}; 20 parser.readHeader(data); 21 parser.loadCommands(); 22 parser.preload(); 21 23 speed = 1; 22 24 duration = 50; 23 25 m_timerID = 0; 26 m_parser = parser; 27 super(data.width, data.height, createPaintEngine(data.version)); 24 28 } 25 29 … … 34 38 * @param bytes ログデータ 35 39 */ 36 public function load(bytes:ByteArray):void40 public static function load(bytes:ByteArray):Player 37 41 { 38 var data:Object = {}; 39 m_parser = new Parser(bytes); 40 m_parser.readHeader(data); 41 var width:uint = data.width; 42 var height:uint = data.height; 43 var version:uint = data.version; 44 createPainter(width, height, version); 45 m_parser.loadCommands(); 46 m_parser.preload(); 47 setUndo(new UndoStack(painter, m_parser.maxUndoCount)); 48 } 49 50 /** 51 * ログデータを再読み込みしてオブジェクトを初期化する 52 * 53 */ 54 public function reload():void 55 { 56 createPainter(width, height, version); 57 m_parser.resetCommands(); 58 setUndo(new UndoStack(painter, m_parser.maxUndoCount)); 42 var player:Player = new Player(new Parser(bytes)); 43 player.setUndo(new UndoStack(player, player.m_parser.maxUndoCount)); 44 return player; 59 45 } 60 46 as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/Recorder.as
r3501 r3505 19 19 public static const DEFAULT_UNDO_MAX:uint = 16; 20 20 21 public function Recorder( bytes:ByteArray, commands:CommandCollection = null)21 public function Recorder(width:uint, height:uint, bytes:ByteArray, commands:CommandCollection) 22 22 { 23 bytes.endian = Endian.BIG_ENDIAN;24 bytes.position = 0;25 23 m_bytes = bytes; 26 m_command = commands ? commands : new CommandCollection();27 super( );24 m_command = commands; 25 super(width, height, createPaintEngine(PAINTER_LOG_VERSION)); 28 26 } 29 27 … … 35 33 * @param undo やり直しできる回数 36 34 */ 37 public function prepare(width:int, height:int, undo:int):void35 public static function create(width:int, height:int, undo:int):Recorder 38 36 { 39 m_command.loadCommands(); 40 writeHeader(PAINTER_LOG_VERSION, width, height, undo); 41 createPainter(width, height, undo); 42 setUndo(new UndoStack(painter, undo)); 43 } 44 45 /** 46 * ログヘッダーを書き出す 47 * 48 * @param version ログのバージョン番号 49 * @param width 画像の幅 50 * @param height 画像の高さ 51 * @param undo やり直しできる回数 52 */ 53 private function writeHeader(version:uint, width:uint, height:uint, undo:uint):void 54 { 37 var bytes:ByteArray = new ByteArray(); 38 var commands:CommandCollection = new CommandCollection(); 39 var version:uint = PAINTER_LOG_VERSION; 40 commands.loadCommands(); 41 bytes.endian = Endian.BIG_ENDIAN; 42 bytes.position = 0; 55 43 var signature:String = "GUNYARA_PAINT:" 56 44 + (version / 100) + ":" 57 45 + ((version % 100) / 10) + ":" 58 46 + (version % 10) + ":" 59 m_bytes.writeUTFBytes(signature); 60 m_bytes.writeShort(width); 61 m_bytes.writeShort(height); 62 m_bytes.writeShort(undo); 47 bytes.writeUTFBytes(signature); 48 bytes.writeShort(width); 49 bytes.writeShort(height); 50 bytes.writeShort(undo); 51 var recorder:Recorder = new Recorder(width, height, bytes, commands); 52 recorder.setUndo(new UndoStack(recorder, undo)); 53 return recorder; 63 54 } 64 55 as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/UndoStack.as
r3501 r3505 1 1 package org.libspark.gunyarapaint.framework 2 2 { 3 import flash.events.EventDispatcher;4 import flash.events.IEventDispatcher;5 6 3 import org.libspark.gunyarapaint.framework.errors.RedoError; 7 4 import org.libspark.gunyarapaint.framework.errors.UndoError; … … 13 10 internal final class UndoStack 14 11 { 15 public function UndoStack(painter: Painter,12 public function UndoStack(painter:CanvasContext, 16 13 size:uint = 16) 17 14 { … … 26 23 } 27 24 28 public function undo( painter:Painter):void25 public function undo(cc:CanvasContext):void 29 26 { 30 27 if (m_index === m_first) { … … 37 34 m_index--; 38 35 } 39 painter.undo = m_buffer[m_index];36 cc.restoreState(m_buffer[m_index]); 40 37 } 41 38 42 public function redo( painter:Painter):void39 public function redo(cc:CanvasContext):void 43 40 { 44 41 if (m_index === m_last) { … … 46 43 } 47 44 m_index = (m_index + 1) % m_buffer.length; 48 painter.undo = m_buffer[m_index];45 cc.restoreState(m_buffer[m_index]); 49 46 } 50 47 51 public function push(painter: Painter):void48 public function push(painter:CanvasContext):void 52 49 { 53 50 m_index = (m_index + 1) % m_buffer.length; 54 m_buffer[m_index] = painter. undo;51 m_buffer[m_index] = painter.saveState(); 55 52 m_last = m_index; 56 53 if (m_index === m_first) { as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/BeginFillCommand.as
r3501 r3505 37 37 public function execute(canvas:CanvasContext):void 38 38 { 39 canvas. painter.beginFill(m_color, m_alpha);39 canvas.beginFill(m_color, m_alpha); 40 40 } 41 41 as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/CompositeCommand.as
r3501 r3505 28 28 public function execute(canvas:CanvasContext):void 29 29 { 30 canvas. painter.composite();30 canvas.composite(); 31 31 canvas.pushUndo(); 32 canvas. painter.stopDrawingSession();32 canvas.stopDrawingSession(); 33 33 } 34 34 as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/DrawCircleCommand.as
r3501 r3505 32 32 public function execute(canvas:CanvasContext):void 33 33 { 34 canvas. painter.drawCircle(m_radius);34 canvas.drawCircle(m_radius); 35 35 } 36 36 as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/EndFillCommand.as
r3501 r3505 28 28 public function execute(canvas:CanvasContext):void 29 29 { 30 canvas. painter.endFill();30 canvas.endFill(); 31 31 } 32 32 as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/FloodFillCommand.as
r3501 r3505 28 28 public function execute(canvas:CanvasContext):void 29 29 { 30 canvas. painter.floodFill();30 canvas.floodFill(); 31 31 canvas.pushUndo(); 32 canvas. painter.stopDrawingSession();32 canvas.stopDrawingSession(); 33 33 } 34 34 as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/HorizontalMirrorCommand.as
r3501 r3505 33 33 public function execute(canvas:CanvasContext):void 34 34 { 35 canvas. painter.transformWithHorizontalMirrorAt(m_index);35 canvas.transformWithHorizontalMirrorAt(m_index); 36 36 } 37 37 as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/LineToCommand.as
r3501 r3505 66 66 public function execute(canvas:CanvasContext):void 67 67 { 68 canvas. painter.lineTo(68 canvas.lineTo( 69 69 readCoordinate.x || writeCoordinate.x, 70 70 readCoordinate.y || writeCoordinate.y as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/MoveToCommand.as
r3501 r3505 56 56 public function execute(canvas:CanvasContext):void 57 57 { 58 canvas. painter.moveTo(58 canvas.moveTo( 59 59 readCoordinate.x || writeCoordinate.x, 60 60 readCoordinate.y || writeCoordinate.y 61 61 ); 62 canvas. painter.startDrawingSession();62 canvas.startDrawingSession(); 63 63 } 64 64 as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/PenCommand.as
r3501 r3505 131 131 public function execute(canvas:CanvasContext):void 132 132 { 133 canvas.p ainter.pen = m_pen;133 canvas.pen = m_pen; 134 134 } 135 135 as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/PixelCommand.as
r3501 r3505 37 37 public function execute(canvas:CanvasContext):void 38 38 { 39 canvas. painter.setPixel(m_x, m_y);39 canvas.setPixel(m_x, m_y); 40 40 canvas.pushUndo(); 41 41 } as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/VerticalMirrorCommand.as
r3501 r3505 33 33 public function execute(canvas:CanvasContext):void 34 34 { 35 canvas. painter.transformWithVerticalMirrorAt(m_index);35 canvas.transformWithVerticalMirrorAt(m_index); 36 36 } 37 37 as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/CopyLayerCommand.as
r3501 r3505 29 29 public function execute(canvas:CanvasContext):void 30 30 { 31 canvas. painter.layers.copy();31 canvas.layers.copy(); 32 32 canvas.pushUndoIfNeed(); 33 33 } as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/CreateLayerCommand.as
r3501 r3505 29 29 public function execute(canvas:CanvasContext):void 30 30 { 31 canvas. painter.layers.add();31 canvas.layers.add(); 32 32 canvas.pushUndoIfNeed(); 33 33 } as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/MergeLayerCommand.as
r3501 r3505 29 29 public function execute(canvas:CanvasContext):void 30 30 { 31 canvas. painter.layers.merge();31 canvas.layers.merge(); 32 32 canvas.pushUndoIfNeed(); 33 33 } as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/RemoveLayerCommand.as
r3501 r3505 29 29 public function execute(canvas:CanvasContext):void 30 30 { 31 canvas. painter.layers.remove();31 canvas.layers.remove(); 32 32 canvas.pushUndoIfNeed(); 33 33 } as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/SetLayerAlphaCommand.as
r3501 r3505 36 36 public function execute(canvas:CanvasContext):void 37 37 { 38 canvas. painter.currentLayerAlpha = m_alpha;38 canvas.currentLayerAlpha = m_alpha; 39 39 canvas.pushUndoIfNeed(); 40 40 } as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/SetLayerBlendModeCommand.as
r3501 r3505 37 37 public function execute(canvas:CanvasContext):void 38 38 { 39 canvas. painter.currentLayerBlendMode = m_blendMode;39 canvas.currentLayerBlendMode = m_blendMode; 40 40 canvas.pushUndoIfNeed(); 41 41 } as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/SetLayerIndexCommand.as
r3501 r3505 36 36 public function execute(canvas:CanvasContext):void 37 37 { 38 canvas. painter.layers.currentIndex = m_index;38 canvas.layers.currentIndex = m_index; 39 39 } 40 40 as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/SetLayerVisibleCommand.as
r3501 r3505 38 38 public function execute(canvas:CanvasContext):void 39 39 { 40 canvas. painter.layers.at(m_index).visible = m_visible;40 canvas.layers.at(m_index).visible = m_visible; 41 41 canvas.pushUndoIfNeed(); 42 42 } as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/commands/layer/SwapLayerCommand.as
r3501 r3505 38 38 public function execute(canvas:CanvasContext):void 39 39 { 40 canvas. painter.layers.swap(m_from, m_to);40 canvas.layers.swap(m_from, m_to); 41 41 canvas.pushUndoIfNeed(); 42 42 } as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/CircleModule.as
r3479 r3505 3 3 import flash.geom.Rectangle; 4 4 5 import org.libspark.gunyarapaint.framework.Painter;6 5 import org.libspark.gunyarapaint.framework.Recorder; 7 6 import org.libspark.gunyarapaint.framework.commands.CompositeCommand; … … 20 19 validateLayerState(); 21 20 setCoordinate(x, y); 22 m_recorder. painter.startDrawingSession();21 m_recorder.startDrawingSession(); 23 22 m_drawing = true; 24 23 } … … 27 26 { 28 27 if (m_drawing) { 29 var painter:Painter = m_recorder.painter;30 28 storeCircleCoordinate(x, y); 31 painter.clear();32 painter.resetPen();33 painter.moveTo(s_rectangle.x, s_rectangle.y);34 painter.drawCircle(s_rectangle.width);29 m_recorder.clear(); 30 m_recorder.resetPen(); 31 m_recorder.moveTo(s_rectangle.x, s_rectangle.y); 32 m_recorder.drawCircle(s_rectangle.width); 35 33 } 36 34 } … … 39 37 { 40 38 if (m_drawing) { 41 m_recorder. painter.stopDrawingSession();39 m_recorder.stopDrawingSession(); 42 40 if (!equalsCoordinate(x, y)) { 43 41 storeCircleCoordinate(x, y); as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/DrawModule.as
r3493 r3505 1 1 package org.libspark.gunyarapaint.framework.modules 2 2 { 3 import flash.geom.Point; 4 3 5 import org.libspark.gunyarapaint.framework.LayerBitmap; 4 import org.libspark.gunyarapaint.framework.Painter;5 6 import org.libspark.gunyarapaint.framework.Recorder; 6 7 import org.libspark.gunyarapaint.framework.commands.HorizontalMirrorCommand; … … 122 123 protected function validateLayerState():void 123 124 { 124 var layer:LayerBitmap = m_recorder. painter.layers.currentLayer;125 var layer:LayerBitmap = m_recorder.layers.currentLayer; 125 126 if (!layer.visible) 126 127 throw new InvisibleLayerError(); … … 158 159 * @return 同じである場合は true 159 160 */ 160 protected function equalsCoordinate(x:Number, y:Number):Boolean 161 { 162 var painter:Painter = m_recorder.painter; 163 return painter.roundPixel(x) == painter.roundPixel(s_coordinateX) && 164 painter.roundPixel(y) == painter.roundPixel(s_coordinateY); 161 protected function equalsCoordinate(x:uint, y:uint):Boolean 162 { 163 var from:Point = new Point(s_coordinateX, s_coordinateY); 164 var to:Point = new Point(x, y); 165 m_recorder.correctCoordinate(from); 166 m_recorder.correctCoordinate(to); 167 return from.equals(to); 165 168 } 166 169 … … 183 186 protected function getArgumentsFromCoordinate(x:Number, y:Number):Object 184 187 { 185 var painter:Painter = m_recorder.painter; 188 var coordinate:Point = new Point(x, y); 189 m_recorder.correctCoordinate(coordinate); 186 190 var args:Object = { 187 "x": painter.roundPixel(x),188 "y": painter.roundPixel(y)191 "x": coordinate.x, 192 "y": coordinate.y 189 193 }; 190 194 return args; … … 197 201 protected function stopDrawing():void 198 202 { 199 m_recorder. painter.stopDrawingSession();203 m_recorder.stopDrawingSession(); 200 204 m_drawing = false; 201 205 } as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/DropperModule.as
r3479 r3505 41 41 { 42 42 "type": PenCommand.COLOR, 43 "color": m_recorder. painter.getPixel(x, y)43 "color": m_recorder.getPixel(x, y) 44 44 } 45 45 ); as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/EllipseModule.as
r3471 r3505 1 1 package org.libspark.gunyarapaint.framework.modules 2 2 { 3 import org.libspark.gunyarapaint.framework.Painter;4 3 import org.libspark.gunyarapaint.framework.Recorder; 5 4 … … 15 14 validateLayerState(); 16 15 setCoordinate(x, y); 17 m_recorder. painter.startDrawingSession();16 m_recorder.startDrawingSession(); 18 17 m_drawing = true; 19 18 } … … 22 21 { 23 22 if (m_drawing) { 24 var painter:Painter = m_recorder.painter; 25 var fromX:int = painter.roundPixel(coordinateX); 26 var fromY:int = painter.roundPixel(coordinateY); 27 var toX:int = painter.roundPixel(x); 28 var toY:int = painter.roundPixel(y); 29 painter.clear(); 30 painter.resetPen(); 31 painter.drawEllipse( 32 fromX, 33 fromY, 34 Math.abs(toX - fromX), 35 Math.abs(toY - fromY) 23 m_recorder.clear(); 24 m_recorder.resetPen(); 25 m_recorder.drawEllipse( 26 coordinateX, 27 coordinateY, 28 Math.abs(x - coordinateX), 29 Math.abs(y - coordinateY) 36 30 ); 37 31 } … … 41 35 { 42 36 if (m_drawing) { 43 m_recorder. painter.stopDrawingSession();37 m_recorder.stopDrawingSession(); 44 38 if (!equalsCoordinate(x, y)) { 45 39 // TODO: implement this as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/FreeHandModule.as
r3479 r3505 43 43 if (m_drawing) { 44 44 if (!m_drawingLine) { 45 var pen:Pen = m_recorder.p ainter.pen;45 var pen:Pen = m_recorder.pen; 46 46 var tempAlpha:Number = pen.alpha; 47 47 m_recorder.commitCommand( as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/LineModule.as
r3479 r3505 1 1 package org.libspark.gunyarapaint.framework.modules 2 2 { 3 import org.libspark.gunyarapaint.framework.Painter;4 3 import org.libspark.gunyarapaint.framework.Recorder; 5 4 import org.libspark.gunyarapaint.framework.commands.CompositeCommand; … … 18 17 validateLayerState(); 19 18 setCoordinate(x, y); 20 m_recorder. painter.startDrawingSession();19 m_recorder.startDrawingSession(); 21 20 m_drawing = true; 22 21 } … … 25 24 { 26 25 if (m_drawing) { 27 var painter:Painter = m_recorder.painter; 28 var fromX:int = painter.roundPixel(coordinateX); 29 var fromY:int = painter.roundPixel(coordinateY); 30 var toX:int = painter.roundPixel(x); 31 var toY:int = painter.roundPixel(y); 32 painter.clear(); 33 painter.resetPen(); 34 painter.moveTo(fromX, fromY); 35 painter.lineTo(toX, toY); 26 m_recorder.clear(); 27 m_recorder.resetPen(); 28 m_recorder.moveTo(coordinateX, coordinateY); 29 m_recorder.lineTo(x, y); 36 30 } 37 31 } … … 40 34 { 41 35 if (m_drawing) { 42 m_recorder. painter.stopDrawingSession();36 m_recorder.stopDrawingSession(); 43 37 if (!equalsCoordinate(x, y)) { 44 38 var from:Object = getArgumentsFromCurrentCoordinate(); as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/PixelModule.as
r3479 r3505 1 1 package org.libspark.gunyarapaint.framework.modules 2 2 { 3 import org.libspark.gunyarapaint.framework.Painter;4 3 import org.libspark.gunyarapaint.framework.Recorder; 5 4 import org.libspark.gunyarapaint.framework.commands.PixelCommand; as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/RectModule.as
r3471 r3505 1 1 package org.libspark.gunyarapaint.framework.modules 2 2 { 3 import org.libspark.gunyarapaint.framework.Painter;4 3 import org.libspark.gunyarapaint.framework.Recorder; 5 4 … … 15 14 validateLayerState(); 16 15 setCoordinate(x, y); 17 m_recorder. painter.startDrawingSession();16 m_recorder.startDrawingSession(); 18 17 m_drawing = true; 19 18 } … … 22 21 { 23 22 if (m_drawing) { 24 var painter:Painter = m_recorder.painter; 25 var fromX:int = painter.roundPixel(coordinateX); 26 var fromY:int = painter.roundPixel(coordinateY); 27 var toX:int = painter.roundPixel(x); 28 var toY:int = painter.roundPixel(y); 29 painter.clear(); 30 painter.resetPen(); 31 painter.drawRect( 32 fromX, 33 fromY, 34 Math.abs(toX - fromX), 35 Math.abs(toY - fromY) 23 m_recorder.clear(); 24 m_recorder.resetPen(); 25 m_recorder.drawRect( 26 coordinateX, 27 coordinateY, 28 Math.abs(x - coordinateX), 29 Math.abs(y - coordinateY) 36 30 ); 37 31 } … … 41 35 { 42 36 if (m_drawing) { 43 m_recorder. painter.stopDrawingSession();37 m_recorder.stopDrawingSession(); 44 38 if (!equalsCoordinate(x, y)) { 45 39 // TODO: implement this as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/RoundRectModule.as
r3471 r3505 14 14 validateLayerState(); 15 15 setCoordinate(x, y); 16 m_recorder. painter.startDrawingSession();16 m_recorder.startDrawingSession(); 17 17 m_drawing = true; 18 18 } … … 26 26 { 27 27 if (m_drawing) { 28 m_recorder. painter.stopDrawingSession();28 m_recorder.stopDrawingSession(); 29 29 if (!equalsCoordinate(x, y)) { 30 30 // TODO: implement this

