チェンジセット 1547: as3/gunyarapaint/trunk
- コミット日時:
- 2008/10/09 03:59:48 (5 年前)
- ファイル:
-
- as3/gunyarapaint/trunk/gunyarapaint/src/gplogplayer.mxml (更新) (1 diff)
- as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint.as (更新) (1 diff)
- as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint.mxml (更新) (1 diff)
- as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/controls/PenDetailControlScript.as (更新) (2 diffs)
- as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/entities/GPLayer.as (更新) (1 diff)
- as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/entities/GPLayerArray.as (更新) (1 diff)
- as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/entities/GPLogger.as (更新) (14 diffs)
- as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/entities/GPPen.as (更新) (3 diffs)
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
as3/gunyarapaint/trunk/gunyarapaint/src/gplogplayer.mxml
r1523 r1547 163 163 ]]> 164 164 </mx:Script> 165 <mx:Label x="313" y="11" text="ver.2008100 507"/>165 <mx:Label x="313" y="11" text="ver.2008100901"/> 166 166 </mx:Application> as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint.as
r1545 r1547 1 private const DEBUG:Boolean = true;1 private const DEBUG:Boolean = false; 2 2 3 3 import flash.events.Event; as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint.mxml
r1545 r1547 12 12 </mx:Script> 13 13 <mx:Canvas id="toolCanvas" x="0" y="0" width="685" height="102"> 14 <mx:Label id="versionLabel" x="238" y="9" text="ver.2008100 507"/>14 <mx:Label id="versionLabel" x="238" y="9" text="ver.2008100901"/> 15 15 <mx:Label x="28" y="7" text="名前"/> 16 16 <mx:TextInput id="fromTextInput" x="55" y="3" maxChars="32" fontSize="14" focusThickness="0"/> as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/controls/PenDetailControlScript.as
r1544 r1547 143 143 dropperButton.selected = false; 144 144 // TODO: pen太さ 145 setTool(GPPen.PEN_MODE_P ENCIL, (String)(blendModeComboBox.value), evt.target.selected);145 setTool(GPPen.PEN_MODE_PIXEL, null, evt.target.selected); 146 146 } 147 147 … … 256 256 penModeComboBox.enabled = false; 257 257 paletteGrid.enabled = false; 258 break; 259 case GPPen.PEN_MODE_PIXEL: 260 thicknessButton1.enabled = false; 261 thicknessButton2.enabled = false; 262 thicknessButton3.enabled = false; 263 thicknessButton4.enabled = false; 264 thicknessButton5.enabled = false; 265 thicknessSlider.enabled = false; 266 alphaSlider.enabled = true; // ドット自体のアルファ値となる。 267 blendModeComboBox.enabled = false; 268 penModeComboBox.enabled = false; 269 paletteGrid.enabled = true; 258 270 break; 259 271 } as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/entities/GPLayer.as
r1523 r1547 67 67 _bitmap.bitmapData = _bitmapData; 68 68 _bitmapData.floodFill(x, y, color); 69 } 70 public function setPixel(x:Number, y:Number, color:uint):Boolean { 71 if (_bitmapData.getPixel32(x, y) == color) { 72 return false; 73 } 74 _bitmapData = _bitmapData.clone(); 75 _bitmap.bitmapData = _bitmapData; 76 _bitmapData.setPixel32(x, y, color); 77 return true; 69 78 } 70 79 // 外から与えられたBitmapDataに、自分の_bitmapDataを_blendModeとalphaを使って描画する。 as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/entities/GPLayerArray.as
r1523 r1547 272 272 } 273 273 274 public function setPixel(x:Number, y:Number, color:uint):Boolean { 275 var ret:Boolean = _a[_targetIndex].setPixel(x, y, color); 276 recombine(); 277 return ret; 278 } 279 274 280 private function reindex():void { 275 281 for (var i:String in _a) { as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/entities/GPLogger.as
r1544 r1547 5 5 package org.libspark.gunyarapaint.entities 6 6 { 7 import flash.display.Bitmap;8 7 import flash.display.BitmapData; 9 8 import flash.errors.EOFError; … … 131 130 case '0.0.8:': // undo時のために、GPLayerでの描画時にbitmapDataをcloneするように、 132 131 // & レイヤの可視・不可視をundoバッファに積まないようにする。 132 case '0.0.9:': // ドット絵ペン追加、lineTo/ドット絵で無駄なログが出ないように 133 133 break; 134 134 default: … … 148 148 var log:ByteArray = new ByteArray(); 149 149 log.endian = flash.utils.Endian.BIG_ENDIAN; 150 log.writeUTFBytes('GUNYARA_PAINT:0.0. 8:');150 log.writeUTFBytes('GUNYARA_PAINT:0.0.9:'); 151 151 log.writeShort(width); 152 152 log.writeShort(height); … … 183 183 public static const ACTION_LAYER_CHANGE_BLEND_MODE:uint = 21; 184 184 public static const ACTION_LAYER_CHANGE_ALPHA:uint = 22; 185 public static const ACTION_SET_PIXEL:uint = 23; 185 186 186 187 // LINESTYLE … … 430 431 eventLayerChangeAlpha(doubleNum); 431 432 break; 433 case ACTION_SET_PIXEL: 434 uintNum = readShort(); 435 uintNum2 = readShort(); 436 eventSetPixel(uintNum, uintNum2); 437 break; 432 438 default: 433 439 if (byte & 0x80) { … … 506 512 507 513 public function eventMoveTo(x:Number, y:Number):void { 508 var ix:int = Math.floor(x );509 var iy:int = Math.floor(y );510 if (_onLogging) {511 var dx:int = ix - _preX;512 var dy:int = iy - _preY;514 var ix:int = Math.floor(x + 0.5); 515 var iy:int = Math.floor(y + 0.5); 516 var dx:int = ix - _preX; 517 var dy:int = iy - _preY; 518 if (_onLogging) { 513 519 if (dx >= -64 && dx <= 63 && dy >= -64 && dy <= 63) { 514 520 // dxもdyも7bitに収まる場合 … … 530 536 531 537 public function eventLineTo(x:Number, y:Number):void { 532 var ix:int = Math.floor(x); 533 var iy:int = Math.floor(y); 538 var ix:int = Math.floor(x + 0.5); 539 var iy:int = Math.floor(y + 0.5); 540 if (!_pen.lineTo(ix, iy)) { // 同じ座標だったらイベントキャンセル 541 return; 542 } 534 543 if (_onLogging) { 535 544 var dx:int = ix - _preX; … … 547 556 _logCount++; 548 557 } 549 _pen.lineTo(ix, iy);550 558 trace('LINE_TO x:' + ix + ' y:' + iy); 551 559 } … … 794 802 trace('FLOOD_FILL'); 795 803 } 804 805 public function eventSetPixel(x:Number, y:Number):void { 806 var ix:int = Math.floor(x); 807 var iy:int = Math.floor(y); 808 if (!_pen.setPixel(ix, iy)) { // 同じドットだったらイベントキャンセル 809 return; 810 } 811 if (_onLogging) { 812 writeByte(ACTION_SET_PIXEL); 813 writeShort(ix); 814 writeShort(iy); 815 _logCount++; 816 } 817 pushUndoBuffer(); 818 trace('SET_PIXEL'); 819 } 796 820 797 821 private function invokeLayerChange():void { … … 1009 1033 _canvas.setCursor(null); 1010 1034 break; 1011 case GPPen.PEN_MODE_PENCIL: 1012 // TODO: つくる。 1035 case GPPen.PEN_MODE_PIXEL: 1013 1036 break; 1014 1037 default: … … 1127 1150 this.eventFloodFill(); 1128 1151 break; 1129 case GPPen.PEN_MODE_PENCIL: 1130 // TODO: つくる。 1152 case GPPen.PEN_MODE_PIXEL: 1153 if (!_layerArray.isTargetLayerVisible) { 1154 Alert.show('不可視の状態では描画できません!', 'ドット絵ツール'); 1155 return; 1156 } 1157 if (_layerArray.isTargetLayerLocked) { 1158 Alert.show('ロックされています!', 'ドット絵ツール'); 1159 return; 1160 } 1161 this.eventSetPixel(evt.localX, evt.localY); 1162 _drawing = true; 1131 1163 break; 1132 1164 } … … 1162 1194 } 1163 1195 break; 1164 case GPPen.PEN_MODE_PENCIL: 1165 // TODO: つくる。 1196 case GPPen.PEN_MODE_PIXEL: 1197 if (_drawing) { 1198 this.eventSetPixel(evt.localX, evt.localY); 1199 } 1166 1200 break; 1167 1201 } … … 1206 1240 _handtoolScrollBase = null; 1207 1241 break; 1208 case GPPen.PEN_MODE_P ENCIL:1209 // TODO: つくる。1242 case GPPen.PEN_MODE_PIXEL: 1243 _drawing = false; 1210 1244 break; 1211 1245 } … … 1221 1255 case GPPen.PEN_MODE_HAND: 1222 1256 case GPPen.PEN_MODE_ERASER: 1257 case GPPen.PEN_MODE_PIXEL: 1223 1258 if (_drawing) { 1224 1259 mouseUp(evt); as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/entities/GPPen.as
r1523 r1547 20 20 public static const PEN_MODE_HANDTOOL:uint = 8; 21 21 public static const PEN_MODE_ERASER:uint = 9; 22 public static const PEN_MODE_P ENCIL:uint = 10;22 public static const PEN_MODE_PIXEL:uint = 10; 23 23 24 24 private var _mode:uint; … … 212 212 } 213 213 214 public function lineTo(x:Number, y:Number): void{214 public function lineTo(x:Number, y:Number):Boolean { 215 215 x = Math.floor(x) + 0.5; 216 216 y = Math.floor(y) + 0.5; 217 217 if (x == currentPoint.x && 218 218 y == currentPoint.y) { 219 return ;219 return false; 220 220 } 221 221 oldLineTo(x, y); 222 return true; 222 223 } 223 224 … … 225 226 _logger.layerArray.floodFill(currentPoint.x, currentPoint.y, this.argbColor); 226 227 } 228 229 public function setPixel(x:int, y:int):Boolean { 230 return _logger.layerArray.setPixel(x, y, this.argbColor); 231 } 227 232 228 233 // FIXME: x, yはcurrentPointでいいのでは?lineStyleもmoveToでセットしてくれるし。 234 // でもコレすでに使っているかもしれない 229 235 public function drawRect(x:Number, y:Number, width:uint, height:uint):void { 230 x = Math.floor(x) + 0.5;231 y = Math.floor(y) + 0.5;232 236 this.drawGraphics.drawRect(x, y, width, height); 233 237 }

