チェンジセット 1122

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

r73@poppop (orig r72): tasuku | 2008-06-02 19:39:12 +0900

  • fixed Alpha Blending fill Rect
  • enable/disable controls depending on pen mode
ファイル:

凡例:

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

    r1121 r1122  
    99  import flash.events.MouseEvent; 
    1010  import flash.geom.Point; 
     11  import flash.geom.Rectangle; 
    1112  import flash.utils.ByteArray; 
    1213   
     
    230231         
    231232        // マウス座標から描画座標に変換。 
    232         private function zz(n:Number):Number { 
     233        public static function zz(n:Number):Number { 
    233234          return Math.floor(n) + 0.5; 
     235        } 
     236        // マウス座標の描画座標での比較 
     237        public static function comparePoint(ax:Number, ay:Number, bx:Number, by:Number):Boolean { 
     238          return (zz(ax) == zz(bx) && zz(ay) == zz(by)); 
    234239        } 
    235240         
     
    287292         
    288293        public function floodFill():void { 
    289           canvasData.floodFill(currentPoint.x, currentPoint.y, _pen.argbColor); 
     294          canvasData.floodFill(currentPoint.x, currentPoint.y, _pen.argbRGBColor); 
    290295      afterDrawBitmap(); 
    291296      logWrite(['floodFill', x, y]); 
    292297        } 
    293  
     298         
    294299        // FIXME: x, yはcurrentPointでいいのでは?lineStyleもmoveToでセットしてくれるし。 
    295300    public function drawRect(x:Number, y:Number, width:uint, height:uint):void { 
  • as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/controls/PenDetailControl.mxml

    r1121 r1122  
    1414  <mx:Label x="3" y="28" text="太"/> 
    1515  <mx:HSlider x="16" y="28" width="87" minimum="1" maximum="30" snapInterval="1" height="12" value="3" id="thicknessSlider"/> 
    16   <mx:Button x="6" y="48" label="細" width="20" paddingLeft="0" paddingRight="0" click="changeThickness(1)"/> 
    17   <mx:Button x="30" y="48" label="中" width="20" paddingLeft="0" paddingRight="0" click="changeThickness(3);"/> 
    18   <mx:Button x="54" y="48" label="太" width="20" paddingLeft="0" paddingRight="0" click="changeThickness(10);"/> 
    19   <mx:Button x="78" y="48" label="極" width="20" paddingLeft="0" paddingRight="0" click="changeThickness(30);"/> 
     16  <mx:Button x="2" y="48" label="極" width="20" paddingLeft="0" paddingRight="0" id="thicknessButton1" click="changeThickness(1);"/> 
     17  <mx:Button x="23" y="48" label="細" width="20" paddingLeft="0" paddingRight="0" id="thicknessButton2" click="changeThickness(3)"/> 
     18  <mx:Button x="44" y="48" label="中" width="20" paddingLeft="0" paddingRight="0" id="thicknessButton3" click="changeThickness(10);"/> 
     19  <mx:Button x="65" y="48" label="太" width="20" paddingLeft="0" paddingRight="0" id="thicknessButton4" click="changeThickness(20);"/> 
     20  <mx:Button x="86" y="48" label="極" width="20" paddingLeft="0" paddingRight="0" id="thicknessButton5" click="changeThickness(30);"/> 
    2021 
    2122  <!-- color palette --> 
  • as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/controls/PenDetailControlScript.as

    r1121 r1122  
    131131  cancelDropper(); 
    132132  _pen.mode = uint(evt.currentTarget.value); 
     133  switch(_pen.mode) { 
     134  case GPPen.PEN_MODE_HAND: 
     135  case GPPen.PEN_MODE_LINE: 
     136    thicknessButton1.enabled = true; 
     137    thicknessButton2.enabled = true; 
     138    thicknessButton3.enabled = true; 
     139    thicknessButton4.enabled = true; 
     140    thicknessButton5.enabled = true; 
     141    thicknessSlider.enabled = true; 
     142    alphaSlider.enabled = true; 
     143    blendModeComboBox.enabled = true; 
     144    break; 
     145  case GPPen.PEN_MODE_FLOOD_FILL: 
     146    thicknessButton1.enabled = false; 
     147    thicknessButton2.enabled = false; 
     148    thicknessButton3.enabled = false; 
     149    thicknessButton4.enabled = false; 
     150    thicknessButton5.enabled = false; 
     151    thicknessSlider.enabled = false; 
     152    alphaSlider.enabled = false; 
     153    blendModeComboBox.enabled = false; 
     154    break; 
     155  } 
    133156  changePen(); 
    134157} 
  • as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/entities/GPPen.as

    r1121 r1122  
    6868    public function get argbColor():uint { 
    6969      return uint(_alpha * 255) << 24 | _color; 
     70    } 
     71    public function get argbRGBColor():uint { 
     72      return 0xFF000000 | _color; 
    7073    } 
    7174     
     
    216219          _canvas.drawCircle(thickness / 2); 
    217220          _canvas.endFill(); 
    218           alpha = tmpAlpha; 
     221          alpha = tmpAlpha;             
    219222        } 
    220223        _canvas.drawShapeOnBitmap(); 
    221224        break; 
    222225      case PEN_MODE_LINE: 
    223         _canvas.moveTo(fromPoint.x, fromPoint.y); 
    224         _canvas.lineTo(evt.localX, evt.localY); 
    225         _canvas.drawShapeOnBitmap(); 
     226        if (!GPCanvas.comparePoint(fromPoint.x, fromPoint.y, evt.localX, evt.localY)) { 
     227          // 始点と終点が違う場合にのみ線を引く 
     228          _canvas.previewClear(); 
     229          _canvas.moveTo(fromPoint.x, fromPoint.y); 
     230          _canvas.lineTo(evt.localX, evt.localY); 
     231          _canvas.drawShapeOnBitmap();           
     232        } 
    226233        break; 
    227234      }