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

差分発生行の前後
無視リスト:
コミット日時:
2010/05/30 21:41:28 (3 年前)
コミッタ:
hkrn
ログメッセージ:

added comments for asdoc and annotations

ファイル:

凡例:

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

    r3605 r3938  
    2020            var skew:Graphics = m_skew.graphics; 
    2121            var i:uint = 0; 
     22                        // 縦線を描く 
    2223            for (i = m_divideCount; i < width; i += m_divideCount) { 
    2324                box.moveTo(i, 0); 
    2425                box.lineTo(i, height); 
    2526            } 
     27                        // 横線を描く 
    2628            for (i = m_divideCount; i < height; i += m_divideCount) { 
    2729                box.moveTo(0, i); 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/LayerBitmap.as

    r3765 r3938  
    6565                                      blendMode:String):void 
    6666        { 
     67                        // m_bitmapData.clone でアンドゥ内のビットマップ画像を保持するようにする 
     68                        // これは以下の floodFill や setPixel も同じ 
    6769            setBitmapData(m_bitmapData.clone()); 
    6870            m_bitmapData.draw(source, null, null, blendMode); 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/LayerBitmapCollection.as

    r3914 r3938  
    255255            var destination:Point = new Point(0, 0); 
    256256            var rectangle:Rectangle = new Rectangle(0, 0, width, height); 
     257                        // 現在保管しているレイヤーを全て消去する 
    257258            clear(); 
    258259            for (var i:uint = 0; i < layerCount; i++) { 
     260                                // レイヤー画像は縦につながっているので、切り出しを行う 
    259261                var bitmapData:BitmapData = new BitmapData(width, height); 
    260262                rectangle.y = i * height; 
     
    275277        public function save(layerBitmap:BitmapData, metadata:Object):void 
    276278        { 
     279                        // まずはレイヤー画像が規定以内かどうかを確認する 
    277280            if (layerBitmap.height > MAX_PIXEL) { 
    278281                var count:uint = Math.min(Math.floor((1.0 * MAX_PIXEL) / height), MAX); 
     
    283286            var rectangle:Rectangle = new Rectangle(0, 0, width, height); 
    284287            var destination:Point = new Point(0, 0); 
     288                        // レイヤー画像を描写するので、ここでロックを掛ける 
    285289            layerBitmap.lock(); 
    286290            for (var i:uint = 0; i < layerCount; i++) { 
    287291                var layer:LayerBitmap = m_layers[i]; 
    288292                destination.y = i * height; 
     293                                // 描写を行い、下の方向に縦のピクセル分ずらすことを繰り返す 
    289294                layerBitmap.copyPixels(layer.bitmapData, rectangle, destination); 
    290295                layersInfo.push(layer.toJSON()); 
     
    403408        internal function startDrawing(engine:PaintEngine):void 
    404409        { 
     410                        // 裏うつりしないレイヤーは今ないよね? 
    405411            if (m_tempLayer == null) { 
    406412                var layer:LayerBitmap = currentLayer; 
    407413                var blendMode:String = layer.blendMode; 
     414                                // ペンの状態は必ずリセットします 
    408415                engine.resetPen(); 
    409416                m_drawingSprite.blendMode = 
    410417                    blendMode == BlendMode.NORMAL ? BlendMode.LAYER : blendMode; 
    411418                m_drawingSprite.alpha = layer.alpha; 
     419                                // 裏うつりしない描写用のレイヤーを敷く 
    412420                m_tempLayer = currentLayer.newDisplayObject; 
    413421                m_tempLayer.blendMode = BlendMode.NORMAL; 
    414422                m_tempLayer.alpha = 1.0; 
     423                                // 下に先程のレイヤーが、上に描いた内容が入った表示オブジェクトを作成する 
    415424                m_drawingSprite.addChild(m_tempLayer); 
    416425                m_drawingSprite.addChild(engine.shape); 
     426                                // 現在のレイヤーと先程の表示オブジェクトを入れ替える 
    417427                m_sprite.removeChild(layer.displayObject); 
    418428                m_sprite.addChildAt(m_drawingSprite, currentIndex); 
     
    422432        internal function stopDrawing(engine:PaintEngine):void 
    423433        { 
     434                        // 裏うつりしないレイヤーは今あるよね? 
    424435            if (m_tempLayer != null) { 
    425436                var layer:LayerBitmap = currentLayer; 
     
    428439                    blendMode == BlendMode.LAYER ? BlendMode.NORMAL : blendMode; 
    429440                layer.alpha = m_drawingSprite.alpha; 
     441                                // 現在のレイヤーと startDrawing で作成した表示オブジェクトを入れ替える 
    430442                m_sprite.removeChild(m_drawingSprite); 
    431443                m_sprite.addChildAt(layer.displayObject, currentIndex); 
     444                                // 描いた内容を消去してリセットする 
    432445                engine.clear(); 
     446                                // 裏うつりしないレイヤーと描いた内容を表示オブジェクトから外す 
    433447                m_drawingSprite.removeChild(m_tempLayer); 
    434448                m_drawingSprite.removeChild(engine.shape); 
     449                                // 裏うつりしないレイヤーを開放 
    435450                m_tempLayer = null; 
    436451            } 
     
    507522        public function get newLayerBitmapData():BitmapData 
    508523        { 
     524                        // レイヤーの数の分だけ縦につながった空白の画像が作成されます 
    509525            return new BitmapData(width, height * count, true, 0x0); 
    510526        } 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/PaintEngineV1.as

    r3699 r3938  
    33    import flash.display.Shape; 
    44    import flash.geom.Point; 
    5  
     5         
     6        /** 
     7         * @private 
     8         *  
     9         * ログのバージョンが 0.0.2 から 0.2.0 で使用されるペイントエンジン。 
     10         * 位置補正のアルゴリズムが異なっているが、現在となっては間違いとされている 
     11         */ 
    612    internal final class PaintEngineV1 extends PaintEngine 
    713    { 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/PaintEngineV2.as

    r3701 r3938  
    33    import flash.display.Shape; 
    44    import flash.geom.Point; 
    5  
     5         
     6        /** 
     7         * @private 
     8         *  
     9         * ログのバージョンが 0.2.1 から使用されるペイントエンジン 
     10         */ 
    611    internal final class PaintEngineV2 extends PaintEngine 
    712    { 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/Painter.as

    r3844 r3938  
    1515     
    1616    /** 
    17      * 再生及び記録のための共通基盤 
     17     * 再生及び記録のための共通基盤。実際の処理は Painter または PaintEngine に委譲する 
    1818     *  
    1919     */ 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/Parser.as

    r3926 r3938  
    4444        { 
    4545            var signature:String = m_bytes.readUTFBytes(14); 
     46                        // 先頭の 14bytes を確認 
    4647            if (signature !== "GUNYARA_PAINT:") { 
    4748                throw new InvalidSignatureError(); 
    4849            } 
     50                        // 6 bytes をとってバージョン文字列を確認 
    4951            var pattern:RegExp = /^(\d)\.(\d)\.(\d):$/; 
    5052            var version:uint = 0; 
     
    5658                    + uint(matched[3]); 
    5759            } 
     60                        // 残り 6bytes はそれぞれ画像の幅と高さ、アンドゥ回数が入っている 
    5861            data.width = m_bytes.readShort(); 
    5962            data.height = m_bytes.readShort(); 
     
    6972        public function rewind():void 
    7073        { 
     74                        // 26bytes 未満であれば エラーを出す 
    7175            if (m_bytes.length < EOH) { 
    7276                throw new ArgumentError( 
    73                     "log data' length is less than 26 bytes" 
     77                    "log data' length is less than " + EOF + " bytes" 
    7478                ); 
    7579            } 
     
    98102            var eventType:String = CommandEvent.PREPARSE; 
    99103            while (bytes.bytesAvailable > 0) { 
     104                                // TODO: Parser#parse を使う 
    100105                var byte:uint = bytes.readUnsignedByte(); 
    101106                if (byte & 0x80) { 
     
    113118                    } 
    114119                } 
     120                                // 連続して Undo または Redo が使われている場合のみカウントする 
    115121                if ((command.commandID === UndoCommand.ID || 
    116122                    command.commandID === RedoCommand.ID) && 
     
    119125                    undoCount++; 
    120126                } 
     127                                // それ以外の場合はリセットする 
    121128                else { 
    122129                    maxUndo = maxUndo < undoCount ? undoCount : maxUndo; 
     
    153160            } 
    154161            var byte:uint = bytes.readUnsignedByte(); 
     162                        // 0x80 の場合は例外として直線描写命令とみなす 
    155163            if (byte & 0x80) { 
    156164                command = m_commands[LineToCommand.ID]; 
    157165                LineToCommand(command).compressedValue = byte; 
    158166            } 
     167                        // 0x40 の場合は例外として位置移動命令とみなす 
    159168            else if (byte & 0x40) { 
    160169                command = m_commands[MoveToCommand.ID]; 
     
    163172            else { 
    164173                var command:ICommand = m_commands[byte]; 
     174                                // 対応するコマンドが無い 
    165175                if (command === null) { 
    166176                    throw new InvalidCommandError(m_count, byte); 
     
    177187        public function get bytes():ByteArray 
    178188        { 
     189                        // XXX: コピーした方が望ましいと考えられる 
    179190            return m_bytes; 
    180191        } 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/UndoStack.as

    r3903 r3938  
    2828        } 
    2929         
     30                /** 
     31                 * UndoStack を復元する 
     32                 *  
     33                 * @param value #save で保存したオブジェクト 
     34                 */              
    3035        public function load(value:Object):void 
    3136        { 
     
    5560        } 
    5661         
     62                /** 
     63                 * UndoStack を保存する 
     64                 *  
     65                 * @param value 保存先となる空のオブジェクト 
     66                 */              
    5767        public function save(value:Object):void 
    5868        { 
     
    120130        } 
    121131         
     132                /** 
     133                 * 巻き戻し可能な回数を返す 
     134                 *  
     135                 * @return  
     136                 */              
    122137        public function get undoCount():uint 
    123138        { 
     
    126141        } 
    127142         
     143                /** 
     144                 * やり直し可能な回数を返す 
     145                 *  
     146                 * @return  
     147                 */              
    128148        public function get redoCount():uint 
    129149        { 
     
    132152        } 
    133153         
     154                /** 
     155                 * UndoStack の大きさを返す 
     156                 *  
     157                 * @return  
     158                 */              
    134159        public function get size():uint 
    135160        { 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/errors/AddLayerError.as

    r3755 r3938  
    22{ 
    33    import org.libspark.gunyarapaint.framework.i18n.TranslatorRegistry; 
    4  
     4         
     5        /** 
     6         * 規定のレイヤー数を超えて作成しようとした場合に作成される 
     7         *  
     8         */ 
    59    public final class AddLayerError extends Error 
    610    { 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/i18n/ITranslator.as

    r3755 r3938  
    11package org.libspark.gunyarapaint.framework.i18n 
    22{ 
     3        /** 
     4         * 翻訳するクラスのインターフェース 
     5         *  
     6         */      
    37    public interface ITranslator 
    48    { 
     9                /** 
     10                 * 文字列から現在のロケールに合わせて翻訳を行う 
     11                 *  
     12                 * @param str 翻訳する文字列 
     13                 * @param rest 翻訳する文字列に対する引数 
     14                 * @return 翻訳した文字列 
     15                 *  
     16                 */              
    517        function translate(str:String, ...rest):String; 
    618    } 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/i18n/NullTranslator.as

    r3755 r3938  
    11package org.libspark.gunyarapaint.framework.i18n 
    22{ 
     3        /** 
     4         * @private 
     5         *  
     6         */ 
    37    public final class NullTranslator implements ITranslator 
    48    { 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/i18n/TranslatorRegistry.as

    r3755 r3938  
    11package org.libspark.gunyarapaint.framework.i18n 
    22{ 
     3        /** 
     4         * ITranslator を実装するクラスを管理するグローバルなクラス 
     5         *  
     6         */      
    37    public final class TranslatorRegistry 
    48    { 
     9                /** 
     10                 * ITranslator を実装したクラスをインストールして利用出来るようにする 
     11                 *  
     12                 * @param translator ITranslator を実装したクラス 
     13                 */              
    514        public static function install(translator:ITranslator):void 
    615        { 
    716            s_translator = translator; 
    817        } 
    9          
     18                 
     19                /** 
     20                 * ITranslator を実装したクラスを返す 
     21                 *  
     22                 * @return  
     23                 */         
    1024        public static function get translator():ITranslator 
    1125        { 
     
    1327        } 
    1428         
     29                /** 
     30                 * ITranslator#translator のショートカット 
     31                 *  
     32                 * @param str 翻訳する文字列 
     33                 * @param rest 翻訳する文字列に対する引数 
     34                 * @return 翻訳した文字列 
     35                 */              
    1536        public static function tr(str:String, ...rest):String 
    1637        { 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/modules/CanvasModuleContext.as

    r3801 r3938  
    33    import org.libspark.gunyarapaint.framework.Recorder; 
    44 
    5     // TODO: CanvasModuleContext 
     5        /** 
     6         * ICanvasModule を管理するクラス 
     7         *  
     8         */      
    69    public final class CanvasModuleContext 
    710    { 
     
    2225        } 
    2326         
     27                /** 
     28                 * ICanvasModule を登録して利用出来るようにする 
     29                 *  
     30                 * @param module ICanvasModule を実装したクラス 
     31                 */              
    2432        public function registerModule(module:ICanvasModule):void 
    2533        { 
     
    2735        } 
    2836         
     37                /** 
     38                 * ICanvasModule#name に対応するモジュールID から ICanvasModule を実装したクラスを返す 
     39                 *  
     40                 * @param name モジュールID 
     41                 * @return ICanvasModule を実装したクラス 
     42                 */              
    2943        public function getModule(name:String):ICanvasModule 
    3044        { 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/net/IParameters.as

    r3899 r3938  
    22{ 
    33    import flash.utils.ByteArray; 
    4  
     4         
     5        /** 
     6         * IRequest#post に渡す文字列化可能なインターフェース 
     7         *  
     8         */ 
    59    public interface IParameters 
    610    { 
     11                /** 
     12                 * IParameters を実装したクラス内の複数のパラメータを文字列化する 
     13                 *  
     14                 * @return IRequest#post に最適な文字列 
     15                 */              
    716        function serialize():ByteArray; 
    817    } 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/net/IRequest.as

    r3911 r3938  
    44    import flash.events.IEventDispatcher; 
    55 
     6        /** 
     7         * 描いた絵を投稿するために必要な通信を行うためのインターフェース 
     8         *  
     9         */      
    610    public interface IRequest extends IEventDispatcher 
    711    { 
     12                /** 
     13                 * 描いた絵を投稿する 
     14                 *  
     15                 * @param url 投稿先 
     16                 * @param parameters IParameters を実装したクラス 
     17                 */              
    818        function post(url:String, parameters:IParameters):void; 
    9          
     19                 
     20                /** 
     21                 * JSONなどの文字列データを取得する 
     22                 *  
     23                 * @param url 取得先 
     24                 */         
    1025        function get(url:String):void; 
    1126         
     27                /** 
     28                 * 画像などの Loader クラスで使用可能なバイナリデータを取得する 
     29                 *  
     30                 * @param url 取得先 
     31                 */              
    1232        function load(url:String):void; 
    1333         
     34                /** 
     35                 * Loader か URLLoader を返す。 
     36                 *  
     37                 * Loader と URLLoader は継承関係に無いため、キャストする必要がある。 
     38                 * そのため、両方共継承している EventDispacher クラスをひとまず返す 
     39                 *  
     40                 * @return Loader または URLLoader のインスタンス 
     41                 */              
    1442        function get loader():EventDispatcher; 
    1543         
     44                /** 
     45                 * Loader か URLLoader のインスタンスを設定する。それ以外の場合は ArgumentError を送出する 
     46                 *   
     47                 * @param value Loader か URLLoader のインスタンス 
     48                 */              
    1649        function set loader(value:EventDispatcher):void; 
    1750    }