チェンジセット 1085

差分発生行の前後
無視リスト:
コミット日時:
2008/08/27 18:15:34 (5 年前)
コミッタ:
tasuku
ログメッセージ:

r36@poppop (orig r35): tasuku | 2008-03-17 14:57:20 +0900
描画ログに線の種類入れた。まだちょっとbuggy。

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/Canvas.as

    r1084 r1085  
    3838    private var canWidth:uint, canHeight:uint; 
    3939 
     40        private var lineThickness:uint; 
     41        private var lineColor:uint; 
     42        private var lineAlpha:Number; 
     43        private var lineBlendMode:String; 
     44        private var lineScaleMode:String; 
     45        private var lineCapsStyle:String; 
     46        private var lineJointStyle:String; 
     47        private var lineMiterLimit:Number; 
     48         
    4049        public function Canvas(width:uint, height:uint, undoBufferSize:uint, logger:Logger) 
    4150        { 
     
    7988      } 
    8089             
     90      // ペン関連の初期化 
     91        setLineThickness(3); 
     92        setLineColor(0x000000); 
     93        setLineAlpha(1); 
     94        setLineBlendMode(flash.display.BlendMode.NORMAL); 
     95        setLineScaleMode(LineScaleMode.NORMAL); 
     96        setLineCapsStyle(CapsStyle.ROUND); 
     97        setLineJointStyle(JointStyle.ROUND); 
     98        setLineMiterLimit(3); 
     99         
    81100      super(); 
    82101        } 
     
    115134        public const MODE_DROPPER:uint = 1; 
    116135        private var penMode:uint = MODE_PEN; 
    117         private var lineColor:uint = 0x000000; 
    118         private var lineThickness:uint = 3; 
    119         private var lineAlpha:Number = 1; 
    120         private var lineBlendMode:String = flash.display.BlendMode.NORMAL; 
    121         private var lineScaleMode:String = LineScaleMode.NORMAL; 
    122         private var lineCapsStyle:String = CapsStyle.ROUND; 
    123         private var lineJointStyle:String = JointStyle.ROUND; 
    124         private var lineMiterLimit:Number = 3; 
    125136         
    126137        private function logWrite(info:Array):void { 
     
    131142         
    132143        public function setLineThickness(t:uint):void { 
     144          if (t > 255) { 
     145            // ToDo: alert 
     146            return; 
     147          } 
    133148          this.lineThickness = t; 
    134           logWrite(['lineStyle', 'thickness', t]) 
     149          logWrite(['lineStyle', Logger.LINESTYLE_THICKNESS, t]) 
    135150        } 
    136151    public function setLineColor(color:uint):void { 
    137152      this.lineColor = color; 
    138           logWrite(['lineStyle', 'color', color]) 
     153          logWrite(['lineStyle', Logger.LINESTYLE_COLOR, color]) 
    139154    } 
    140155        public function setLineAlpha(alpha:Number):void { 
    141156          this.lineAlpha = alpha; 
    142           logWrite(['lineStyle', 'alpha', alpha]) 
     157          logWrite(['lineStyle', Logger.LINESTYLE_ALPHA, alpha]) 
    143158        } 
    144159        public function setLineBlendMode(blend:String):void { 
    145160          this.lineBlendMode = blend; 
    146           logWrite(['lineStyle', 'blendMode', blend]) 
     161          logWrite(['lineStyle', Logger.LINESTYLE_BLEND_MODE, blend]) 
    147162        } 
    148163        public function setLineScaleMode(mode:String):void { 
    149164          this.lineScaleMode = mode; 
    150           logWrite(['lineStyle', 'scaleMode', mode]) 
     165          logWrite(['lineStyle', Logger.LINESTYLE_SCALE_MODE, mode]) 
    151166        } 
    152167        public function setLineCapsStyle(caps:String):void { 
    153168          this.lineCapsStyle = caps; 
    154           logWrite(['lineStyle', 'caps', caps]) 
     169          logWrite(['lineStyle', Logger.LINESTYLE_CAPS, caps]) 
    155170        } 
    156171        public function setLineJointStyle(joints:String):void { 
    157172          this.lineJointStyle = joints; 
    158           logWrite(['lineStyle', 'joints', joints]) 
     173          logWrite(['lineStyle', Logger.LINESTYLE_JOINTS, joints]) 
    159174        } 
    160175        public function setLineMiterLimit(miterLimit:Number):void { 
    161176          this.lineMiterLimit = miterLimit; 
    162           logWrite(['lineStyle', 'miterLimit', miterLimit]) 
     177          logWrite(['lineStyle', Logger.LINESTYLE_MITER_LIMIT, miterLimit]) 
    163178        } 
    164179        private function setLineStyle():void { 
     
    187202        private function moveTo(x:Number, y:Number):void { 
    188203      lineShape.graphics.moveTo(x, y); 
     204      setLineStyle(); 
    189205      logWrite(['moveTo', x, y]); 
    190206        } 
     
    197213            case MODE_PEN: 
    198214              moveTo(evt.localX, evt.localY); 
    199         setLineStyle(); 
    200215        break; 
    201216      case MODE_DROPPER: 
     
    308323         
    309324        private function playLogNext():void { 
    310           // FIXME: linestyle 
    311           setLineStyle(); 
    312325          var a:Array; 
    313326          if ((a = log.read())) { 
     
    321334          break; 
    322335        case Logger.ACTION_LINESTYLE: 
     336          switch (a[1]) { 
     337          case Logger.LINESTYLE_THICKNESS: 
     338            setLineThickness(a[2]); 
     339            break; 
     340          case Logger.LINESTYLE_COLOR: 
     341            setLineColor(a[2]); 
     342            break; 
     343          case Logger.LINESTYLE_ALPHA: 
     344            setLineAlpha(a[2]); 
     345            break; 
     346          case Logger.LINESTYLE_BLEND_MODE: 
     347            setLineBlendMode(a[2]); 
     348            break; 
     349          case Logger.LINESTYLE_SCALE_MODE: 
     350            setLineScaleMode(a[2]); 
     351            break; 
     352          case Logger.LINESTYLE_CAPS: 
     353            setLineCapsStyle(a[2]); 
     354            break; 
     355          case Logger.LINESTYLE_JOINTS: 
     356            setLineJointStyle(a[2]); 
     357            break; 
     358          case Logger.LINESTYLE_MITER_LIMIT: 
     359            setLineMiterLimit(a[2]); 
     360            break; 
     361          } 
    323362          break; 
    324363            } 
  • as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/Logger.as

    r1083 r1085  
    4343    public static const ACTION_LINETO:uint = 2; 
    4444    public static const ACTION_LINESTYLE:uint = 3; 
     45 
     46    // LINESTYLE 
     47    public static const LINESTYLE_THICKNESS:uint = 1; 
     48    public static const LINESTYLE_COLOR:uint = 2; 
     49    public static const LINESTYLE_ALPHA:uint = 3; 
     50    public static const LINESTYLE_BLEND_MODE:uint = 4; 
     51    public static const LINESTYLE_SCALE_MODE:uint = 5; 
     52    public static const LINESTYLE_CAPS:uint = 6; 
     53    public static const LINESTYLE_JOINTS:uint = 7; 
     54    public static const LINESTYLE_MITER_LIMIT:uint = 8; 
    4555 
    4656    public function write(info:Array):void { 
     
    8494        break; 
    8595      case 'lineStyle': 
    86         var type:uint = info[1]; 
    87         var value:uint = info[2]; 
     96        var style:uint = info[1]; 
     97        writeByte(ACTION_LINESTYLE); 
     98        writeByte(style); 
     99        switch (style) { 
     100        case Logger.LINESTYLE_THICKNESS: 
     101          writeByte(info[2]); // 255 
     102          break; 
     103        case Logger.LINESTYLE_COLOR: 
     104          writeUInt(info[2]); 
     105          break; 
     106        case Logger.LINESTYLE_ALPHA: 
     107        case Logger.LINESTYLE_MITER_LIMIT: 
     108          writeDouble(info[2]); 
     109          break; 
     110        case Logger.LINESTYLE_BLEND_MODE: 
     111        case Logger.LINESTYLE_SCALE_MODE: 
     112        case Logger.LINESTYLE_CAPS: 
     113        case Logger.LINESTYLE_JOINTS: 
     114          writeUTF(info[2]); 
     115          break; 
     116        } 
    88117        break; 
    89118      } 
     
    99128      log.writeUnsignedInt(value); 
    100129    } 
     130    private function writeDouble(value:Number):void { 
     131      log.writeDouble(value); 
     132    } 
     133    private function writeUTF(value:String):void { 
     134      log.writeUTF(value); 
     135    } 
    101136    private function readByte():uint { 
    102137      return log.readUnsignedByte(); 
     
    107142    private function readUShort():uint { 
    108143      return uint(log.readShort() & 0xffff); 
     144    } 
     145    private function readUInt():uint { 
     146      return log.readUnsignedInt(); 
     147    } 
     148    private function readDouble():Number { 
     149      return log.readDouble(); 
     150    } 
     151    private function readUTF():String { 
     152      return log.readUTF(); 
    109153    } 
    110154    public function read():Array { 
     
    112156      var dx:int, dy:int; 
    113157      var short:uint; 
     158      var obj:Object; 
    114159      try { 
    115160        byte = readByte(); 
     
    128173          return [ACTION_LINETO, preX, preY]; 
    129174        case ACTION_LINESTYLE: 
    130           return [ACTION_LINESTYLE]; 
     175          dx = readByte(); // style type 
     176          switch (dx) { 
     177          case Logger.LINESTYLE_THICKNESS: 
     178            obj = readByte(); 
     179            break; 
     180          case Logger.LINESTYLE_COLOR: 
     181            obj = readUInt(); 
     182            break; 
     183          case Logger.LINESTYLE_ALPHA: 
     184          case Logger.LINESTYLE_MITER_LIMIT: 
     185            obj = readDouble(); 
     186            break; 
     187          case Logger.LINESTYLE_BLEND_MODE: 
     188          case Logger.LINESTYLE_SCALE_MODE: 
     189          case Logger.LINESTYLE_CAPS: 
     190          case Logger.LINESTYLE_JOINTS: 
     191            obj = readUTF(); 
     192            break; 
     193          } 
     194          return [ACTION_LINESTYLE, dx, obj]; 
    131195        default: 
    132196          if (byte & 0x80) {