チェンジセット 3487: as3/gunyarapaint

差分発生行の前後
無視リスト:
コミット日時:
2010/03/06 18:09:49 (3 年前)
コミッタ:
hkrn
ログメッセージ:

make UndoStack? hidden and dispatch CommandEvent?.COMMITTED at Recorder class, refactoring

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/CanvasContext.as

    r3434 r3487  
    55     
    66    import org.libspark.gunyarapaint.framework.errors.NotSupportedVersionError; 
     7    import org.libspark.gunyarapaint.framework.events.UndoEvent; 
    78     
    89    public class CanvasContext extends EventDispatcher 
     
    2425        { 
    2526            m_undo.undo(m_painter); 
     27            if (hasEventListener(UndoEvent.UNDO)) 
     28                dispatchEvent(new UndoEvent(UndoEvent.UNDO, m_undo.undoCount, m_undo.redoCount)); 
    2629        } 
    2730         
     
    3235        { 
    3336            m_undo.redo(m_painter); 
     37            if (hasEventListener(UndoEvent.REDO)) 
     38                dispatchEvent(new UndoEvent(UndoEvent.REDO, m_undo.undoCount, m_undo.redoCount)); 
    3439        } 
    3540         
     
    4045        { 
    4146            m_undo.push(m_painter); 
     47            if (hasEventListener(UndoEvent.PUSH)) 
     48                dispatchEvent(new UndoEvent(UndoEvent.PUSH, m_undo.undoCount, m_undo.redoCount)); 
    4249        } 
    4350         
     
    5158        { 
    5259            if (m_version <= 21) 
    53                 m_undo.push(m_painter); 
     60                pushUndo(); 
    5461        } 
    5562         
     63        /** 
     64         * Painter オブジェクトを作成する 
     65         *  
     66         * @param width 画像の幅 
     67         * @param height 画像の高さ 
     68         * @param version ペイントログのバージョン 
     69         */ 
    5670        protected function createPainter(width:int, height:int, version:uint):void 
    5771        { 
     
    6680                throw new NotSupportedVersionError(version.toString()); 
    6781            } 
     82            m_width = width; 
     83            m_height = height; 
     84            m_version = version; 
    6885        } 
    6986         
     
    109126         
    110127        /** 
    111          * お絵描きを実行するオブジェクトを設定する 
    112          *  
    113          */ 
    114         internal function setPainter(value:Painter):void 
    115         { 
    116             m_painter = value; 
    117         } 
    118          
    119         /** 
    120          * 現在のお絵描きログのバージョンを設定する 
    121          *  
    122          */ 
    123         internal function setVersion(value:uint):void 
    124         { 
    125             m_version = value; 
    126         } 
    127          
    128         /** 
    129128         * UndoStack オブジェクトを設定する 
    130129         *  
     
    136135        } 
    137136         
    138         /** 
    139          * 描写するキャンバスの幅を設定する 
    140          *  
    141          */ 
    142         internal function setWidth(value:uint):void 
    143         { 
    144             m_width = value; 
    145         } 
    146          
    147         /** 
    148          * 描写するキャンバスの高さを設定する 
    149          *  
    150          * @return 画像の幅 
    151          */ 
    152         internal function setHeight(value:uint):void 
    153         { 
    154             m_height = value; 
    155         } 
    156          
    157137        private var m_version:uint; 
    158138        private var m_painter:Painter; 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/Player.as

    r3434 r3487  
    3939            m_parser.loadCommands(); 
    4040            m_parser.preload(); 
    41             setWidth(width); 
    42             setHeight(height); 
    43             setVersion(version); 
    4441            setUndo(new UndoStack(painter, m_parser.maxUndoCount)); 
    4542        } 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/Recorder.as

    r3479 r3487  
    11package org.libspark.gunyarapaint.framework 
    22{ 
    3     import flash.utils.ByteArray; 
    4      
    53    import org.libspark.gunyarapaint.framework.commands.ICommand; 
     4    import org.libspark.gunyarapaint.framework.events.CommandEvent; 
    65 
    76    public final class Recorder extends CanvasContext 
     
    98        public static const DEFAULT_UNDO_MAX:uint = 16; 
    109         
    11         public function Recorder(
     10        public function Recorder(logger:Logger
    1211        { 
     12            m_logger = logger; 
    1313            super(); 
    14             var bytes:ByteArray = new ByteArray(); 
    15             m_logger = new Logger(bytes); 
    1614        } 
    1715         
     
    2220         * @param height 画像の高さ 
    2321         * @param undo やり直しできる回数 
    24          */         
     22         */ 
    2523        public function prepare(width:int, height:int, undo:int):void 
    2624        { 
    27             setWidth(width); 
    28             setHeight(height); 
    2925            m_logger.writeHeader(PAINTER_LOG_VERSION, width, height, undo); 
    3026            m_logger.loadCommands(); 
     
    4440            command.write(m_logger.bytes, args); 
    4541            command.execute(this); 
     42            if (hasEventListener(CommandEvent.COMMITTED)) 
     43                dispatchEvent(new CommandEvent(CommandEvent.COMMITTED, command)); 
    4644        } 
    4745         
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/UndoStack.as

    r3438 r3487  
    66    import org.libspark.gunyarapaint.framework.errors.RedoError; 
    77    import org.libspark.gunyarapaint.framework.errors.UndoError; 
    8     import org.libspark.gunyarapaint.framework.events.UndoEvent; 
    98 
    10     public final class UndoStack extends EventDispatcher 
     9    internal final class UndoStack 
    1110    { 
    1211        public function UndoStack(painter:Painter, 
    13                                   size:uint = 16, 
    14                                   target:IEventDispatcher = null) 
     12                                  size:uint = 16) 
    1513        { 
    16             super(target); 
    1714            m_buffer = new Vector.<Object>(size + 1, true); 
    1815            m_index = 0; 
     
    3734            } 
    3835            painter.undo = m_buffer[m_index]; 
    39             if (hasEventListener(UndoEvent.UNDO)) 
    40                 dispatchEvent(new UndoEvent(UndoEvent.UNDO)); 
    4136        } 
    4237         
     
    4843            m_index = (m_index + 1) % m_buffer.length; 
    4944            painter.undo = m_buffer[m_index]; 
    50             if (hasEventListener(UndoEvent.REDO)) 
    51                 dispatchEvent(new UndoEvent(UndoEvent.REDO)); 
    5245        } 
    5346