チェンジセット 1472
- コミット日時:
- 2008/10/02 03:54:41 (5 年前)
- ファイル:
-
- as3/gunyarapaint/trunk/gunyarapaint/src/gplogplayer.mxml (更新) (5 diffs)
- as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint.as (更新) (11 diffs)
- as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/controls/GPCanvas.as (更新) (5 diffs)
- as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/controls/GPCanvasWindowControl.as (更新) (3 diffs)
- as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/controls/PenDetailControlScript.as (更新) (1 diff)
- as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/controls/PenDetailWindowControl.mxml (更新) (2 diffs)
- as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/entities/GPLayer.as (更新) (7 diffs)
- as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/entities/GPLayerArray.as (更新) (5 diffs)
- as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/entities/GPLogger.as (更新) (2 diffs)
- as3/gunyarapaint/trunk/nicopedia/org/libspark/nicopedia/Com.as (更新) (7 diffs)
- as3/gunyarapaint/trunk/picokakiko/src/picokakiko.as (更新) (3 diffs)
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
as3/gunyarapaint/trunk/gunyarapaint/src/gplogplayer.mxml
r1458 r1472 27 27 private var oelog:ByteArray; 28 28 private var baseImg:BitmapData; 29 private var baseImgInfo:Object; 29 30 private var oekakiId:uint; 30 31 private var postUrl:String; … … 52 53 return; 53 54 } 54 if (parameters['baseImgUrl']) {55 new Com().loadURL(parameters['baseImgUrl'], getBaseImgHandler);56 }57 58 55 if (parameters['postUrl']) { 59 56 postUrl = parameters['postUrl']; … … 71 68 oelog = com.data; 72 69 oelog.uncompress(); 73 if (!parameters['baseImgUrl'] || baseImg) { // baseImgがいらないか、そちらもそろったときにplay 70 if (parameters['baseImgUrl']) { 71 new Com().loadURL(parameters['baseImgUrl'], getBaseImgHandler); 72 } else { 74 73 play(); 75 74 } … … 78 77 private function getBaseImgHandler(com:Com):void { 79 78 baseImg = Bitmap(com.content).bitmapData; 80 if (oelog) { // どちらもそろったときにplay 79 if (parameters['baseImgInfoUrl']) { 80 new Com().sendGetUrlRequest(parameters['baseImgInfoUrl'], getBaseImgInfoHandler); 81 } else { 81 82 play(); 82 83 } 84 } 85 86 private function getBaseImgInfoHandler(com:Com):void { 87 baseImgInfo = com.jsonObject; 88 play(); 83 89 } 84 90 … … 88 94 private function createLogCan():void { 89 95 logger = new GPLogger(oelog); 90 logcan = logger.createViewerCanvas(baseImg );96 logcan = logger.createViewerCanvas(baseImg, baseImgInfo); 91 97 canvas.addChild(logcan); 92 98 canvas.width = logcan.width + 2; as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint.as
r1458 r1472 1 private const DEBUG:Boolean = true;1 private const DEBUG:Boolean = false; 2 2 3 3 import flash.events.Event; … … 5 5 import flash.geom.Point; 6 6 import flash.ui.Keyboard; 7 import flash.utils.ByteArray;8 7 9 8 import mx.controls.Alert; … … 17 16 import org.libspark.gunyarapaint.entities.GPLogger; 18 17 import org.libspark.gunyarapaint.entities.GPPen; 18 import org.libspark.gunyarapaint.entities.GPLayerArray; 19 19 import org.libspark.gunyarapaint.utils.MiscUtils; 20 20 import org.libspark.nicopedia.Com; … … 50 50 this.enabled = false; 51 51 if (parameters['postUrl'] && parameters['cookie'] && parameters['magic'] && parameters['redirectUrl']) { 52 new Com().setPostEnv(parameters['postUrl'], parameters['cookie'], parameters['magic']);53 52 postOekakiButton.enabled = true; 54 53 redirectUrl = parameters['redirectUrl']; … … 71 70 if (parameters['oekakiId'] && parameters['baseImgUrl']) { 72 71 oekakiId = uint(parameters['oekakiId']); 73 var url:String = parameters['baseImgUrl']; 74 new Com().sendGetUrlRequest(url, getBaseImgHandler); 72 new Com().loadURL(parameters['baseImgUrl'], getBaseImgHandler); 75 73 this.enabled = false; 76 74 } else { … … 94 92 } 95 93 } 96 gpCanvas = gpCanvasWindow.createCanvas(canvasWidth, canvasHeight, undoBufferSize, null, null, penDetailWindow);94 gpCanvas = gpCanvasWindow.createCanvas(canvasWidth, canvasHeight, undoBufferSize, null, null, null, penDetailWindow); 97 95 initGunyaraPaintCanvas(); 98 96 } … … 150 148 public function deserialize(s:String):void { 151 149 var log:GPLogger = GPLogger.deserialize(s); 152 gpCanvas = log.createViewerCanvas(null ); // FIXME: baseImg150 gpCanvas = log.createViewerCanvas(null, null); // FIXME: baseImg 153 151 log.play(gpCanvas, 30000); 154 152 } … … 191 189 } 192 190 191 // TODO: もう本当に汚い… これのスコープを短くする。 192 private var baseImg:BitmapData; 193 193 194 private function getBaseImgHandler(com:Com):void { 194 var baseImg:BitmapData = Bitmap(data).bitmapData; 195 canvasWidth = baseImg.width; 196 canvasHeight = baseImg.height; 197 gpCanvas = gpCanvasWindow.createCanvas(0, 0, undoBufferSize, null, baseImg, penDetailWindow); 198 initGunyaraPaintCanvas(); 199 this.enabled = true; 195 baseImg = Bitmap(com.content).bitmapData; 196 if (parameters['baseImgInfoUrl']) { 197 new Com().sendGetUrlRequest(parameters['baseImgInfoUrl'], getBaseImgInfoHandler); 198 } else { 199 // 画像のサイズがそのままwidth/height 200 baseImgToCanvas(baseImg.width, baseImg.height, null); 201 } 202 } 203 204 private function getBaseImgInfoHandler(com:Com):void { 205 var info:Object = com.jsonObject; 206 baseImgToCanvas(info['width'], info['height'], info); 207 } 208 209 private function baseImgToCanvas(width:uint, height:uint, baseInfo:Object):void { 210 this.canvasWidth = width; 211 this.canvasHeight = height; 212 gpCanvas = gpCanvasWindow.createCanvas( 213 width, height, undoBufferSize, null, 214 baseImg, baseInfo, penDetailWindow); 215 if (baseInfo) { 216 // TODO: コンストラクタに入れていいような気がする 217 gpCanvas.baseImgInfo = baseInfo; 218 } 219 initGunyaraPaintCanvas(); 220 this.enabled = true; 221 200 222 } 201 223 … … 205 227 Alert.show(com.errStr, ALERT_TITLE); 206 228 this.enabled = true; 207 } else if ( data.toString() != '') {208 Alert.show( data.toString(), ALERT_TITLE);229 } else if (com.data.toString() != '') { 230 Alert.show(com.data.toString(), ALERT_TITLE); 209 231 this.enabled = true; 210 232 } else { … … 270 292 } 271 293 this.enabled = false; 272 new Com().postOekaki(fromTextInput.text, 273 messageTextArea.text, 274 oekakiId, 275 gpCanvas.dataForPost 276 ); 294 var com:Com = new Com(); 295 com.postOekaki(parameters['postUrl'], 296 parameters['magic'], 297 parameters['cookie'], 298 fromTextInput.text, 299 messageTextArea.text, 300 oekakiId, 301 gpCanvas.dataForPost, 302 commCompleteHandler 303 ); 277 304 } 278 305 … … 286 313 private function playLogHandler(evt:FlexEvent):void { 287 314 logger = gpCanvas.logger; 288 logcan = logger.createViewerCanvas(null );315 logcan = logger.createViewerCanvas(null, null); 289 316 this.addChild(logcan); 290 317 logger.play(logcan, 1000); as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/controls/GPCanvas.as
r1468 r1472 12 12 import mx.managers.CursorManager; 13 13 14 import org.libspark.gunyarapaint.controls.PenDetailWindowControl;15 14 import org.libspark.gunyarapaint.entities.GPLayerArray; 16 15 import org.libspark.gunyarapaint.entities.GPLogger; … … 46 45 private var _penDetailWindow:PenDetailWindowControl; // ペンのコントロール。 47 46 48 public function GPCanvas(width:uint, height:uint, undoBufferSize:uint, logger:GPLogger, base Data:BitmapData, penDetailWindow:PenDetailWindowControl)47 public function GPCanvas(width:uint, height:uint, undoBufferSize:uint, logger:GPLogger, baseLayers:BitmapData, baseInfo:Object, penDetailWindow:PenDetailWindowControl) 49 48 { 50 49 this.percentHeight = 100; … … 69 68 70 69 // レイヤー群のbitmapたち 71 if (baseData) { 72 canWidth = baseData.width; 73 canHeight = baseData.height; 74 _layers = new GPLayerArray(this, GPLayerArray.getArrayFromBitmapLayers(this, baseData, canWidth, canHeight), 75 0, canWidth, canHeight); 76 } else { 77 canWidth = width; 78 canHeight = height; 79 _layers = new GPLayerArray(this, null, 0, canWidth, canHeight); 80 } 81 this.width = canWidth; 82 this.height = canHeight; 83 70 canWidth = width; 71 canHeight = height; 72 this.width = canWidth; 73 this.height = canHeight; 74 if (baseLayers) { 75 _layers = new GPLayerArray(this, 76 GPLayerArray.getArrayFromBitmapLayers(this, baseLayers, baseInfo), 77 0, canWidth, canHeight); 78 } else { 79 _layers = new GPLayerArray(this, null, 0, canWidth, canHeight); 80 } 84 81 addChildAt(_layers.view, 2); 85 82 // combineLayers(); … … 479 476 o['log_count'] = _log.getLogCount(); 480 477 if (_penDetailWindow) { 481 o['info']['pen_details'] = [_penDetailWindow.dataForPost]; // TODO: 今後はpaletteが複数478 o['info']['pen_details'] = _penDetailWindow.dataForPost; 482 479 } 483 480 return o; … … 498 495 return _layers.isTargetLayerVisible; 499 496 } 497 public function set baseImgInfo(info:Object):void { 498 if (_penDetailWindow) { 499 _penDetailWindow.baseImgInfo = info; 500 } 501 } 500 502 } 501 503 } as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/controls/GPCanvasWindowControl.as
r1458 r1472 1 1 package org.libspark.gunyarapaint.controls 2 2 { 3 import flash.geom.Point; 3 4 import flash.display.BitmapData; 4 import flash.geom.Point;5 6 import org.libspark.gunyarapaint.entities.GPLogger;7 import org.libspark.gunyarapaint.entities.GPPen;8 import org.libspark.gunyarapaint.utils.ComponentResizer;9 5 10 6 import mx.containers.HBox; … … 17 13 import mx.events.ResizeEvent; 18 14 import mx.events.ScrollEvent; 15 16 import org.libspark.gunyarapaint.entities.GPLogger; 17 import org.libspark.gunyarapaint.entities.GPPen; 18 import org.libspark.gunyarapaint.utils.ComponentResizer; 19 19 20 20 public class GPCanvasWindowControl extends TitleWindow … … 56 56 private var scrollDragStartPoint:Point; 57 57 58 public function createCanvas(width:uint, height:uint, undoBufferSize:uint, logger:GPLogger, base Data:BitmapData, penDetailWindow:PenDetailWindowControl):GPCanvas {58 public function createCanvas(width:uint, height:uint, undoBufferSize:uint, logger:GPLogger, baseLayers:BitmapData, baseInfo:Object, penDetailWindow:PenDetailWindowControl):GPCanvas { 59 59 if (!_canvas) { 60 _canvas = new GPCanvas(width, height, undoBufferSize, logger, base Data, penDetailWindow);60 _canvas = new GPCanvas(width, height, undoBufferSize, logger, baseLayers, baseInfo, penDetailWindow); 61 61 //_canvas.setStyle('borderColor', 0x000000); 62 62 //_canvas.setStyle('borderStyle', 'solid'); as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/controls/PenDetailControlScript.as
r1460 r1472 318 318 }; 319 319 } 320 321 public function set baseImgInfo(o:Object):void { 322 gridItemPalette1.setStyle('backgroundColor', o['palettes'][0]); 323 324 } as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/controls/PenDetailWindowControl.mxml
r1458 r1472 3 3 <ns1:PenDetailControl id="penDetail" x="0" y="0"> 4 4 </ns1:PenDetailControl> 5 <mx:Script> 5 <mx:Script><![CDATA[ 6 6 import org.libspark.gunyarapaint.entities.GPPen; 7 7 public function get pen():GPPen { … … 14 14 return [penDetail.dataForPost]; // TODO: 現在は111パレットのみだけど、配列化する 15 15 } 16 </mx:Script> 16 public function set baseImgInfo(o:Object):void { 17 var a:Array = o['pen_details']; 18 for (var i:uint = 0; i < a.length; i++) { 19 penDetail.baseImgInfo = a[i]; 20 } 21 } 22 ]]></mx:Script> 17 23 </mx:TitleWindow> as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/entities/GPLayer.as
r1345 r1472 16 16 private var _show:Boolean; 17 17 private var _lock:Boolean; 18 private var _mask:Boolean; // now not use19 18 private var _blendMode:String; 20 19 private var _alpha:Number; … … 32 31 public function GPLayer(canvas:GPCanvas, 33 32 source:BitmapData, width:uint, height:uint, index:uint, 34 show:Boolean = true, lock:Boolean = false, mask:Boolean = false,33 show:Boolean = true, lock:Boolean = false, 35 34 blendMode:String = 'normal' /* flash.display.BlendMode.NORMAL*/, 36 35 alpha:Number = 1.0, … … 47 46 _show = show; 48 47 _lock = lock; 49 _mask = mask;50 48 _colorTransform = new ColorTransform(); 51 49 _bitmap = new Bitmap(_bitmapData); … … 60 58 61 59 public function clone():GPLayer { 62 return new GPLayer(_canvas, _bitmapData, _width, _height, _index, _show, _lock, _ mask, _blendMode, _alpha, _name);60 return new GPLayer(_canvas, _bitmapData, _width, _height, _index, _show, _lock, _blendMode, _alpha, _name); 63 61 } 64 62 … … 84 82 public function get lock():Boolean { 85 83 return _lock; 86 }87 public function get mask():Boolean {88 return _mask;89 84 } 90 85 public function get show():Boolean { … … 121 116 return (_lock ? 'on' : 'off'); 122 117 } 123 public function get maskCheck():String {124 return (_mask ? 'on' : 'off');125 }126 118 public function get showCheck():String { 127 119 return (_show ? 'on' : 'off'); … … 129 121 public function set lockCheck(s:String):void { 130 122 _lock = (s == 'on'); 131 }132 public function set maskCheck(s:String):void {133 _mask = (s == 'on');134 123 } 135 124 public function set showCheck(s:String):void { as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/entities/GPLayerArray.as
r1458 r1472 2 2 { 3 3 import com.adobe.images.PNGEncoder; 4 4 5 5 import flash.display.BitmapData; 6 6 import flash.display.BlendMode; … … 39 39 _a = a; 40 40 for (var i:uint = 0; i < a.length; i++) { 41 if (!a[i].show) { 42 a[i].bitmap.visible = false; 43 } 41 44 _view.addChild(a[i].bitmap); 42 45 } … … 51 54 } 52 55 53 public static function getArrayFromBitmapLayers(can:GPCanvas, bls:BitmapData, w:uint, h:uint):Array { 56 public static function getArrayFromBitmapLayers(can:GPCanvas, bls:BitmapData, info:Object):Array { 57 var w:uint = info['width']; 58 var h:uint = info['height']; 54 59 var layer_count:uint = bls.height / h; 55 60 var dp:Point = new Point(0, 0); … … 58 63 var lbd:BitmapData = new BitmapData(w, h); 59 64 lbd.copyPixels(bls, new Rectangle(0, i * h, w, h), dp); 60 var l:GPLayer = new GPLayer(can, lbd, w, h, i); 65 var l:GPLayer = new GPLayer(can, lbd, w, h, i, 66 info.layer_infos[i].visible == 'true', 67 info.layer_infos[i].lock == 'true', 68 info.layer_infos[i].blendMode 69 ); 61 70 ary.push(l); 62 71 } … … 214 223 'layers_image': PNGEncoder.encode(cb), 215 224 'info': { 225 'width': _width, 226 'height': _height, 216 227 'layer_infos': info 217 228 } 218 229 }; 230 } 231 232 public function set baseImgInfo(o:Object):void { 233 var infos:Array = o['layer_infos']; 234 for (var i:uint = 0; i < infos.length; i++) { 235 _a[i].lock = infos[i]['lock']; 236 _a[i].show = infos[i]['visible']; 237 _a[i].blendMode = infos[i]['blendMode']; 238 } 219 239 } 220 240 as3/gunyarapaint/trunk/gunyarapaint/src/org/libspark/gunyarapaint/entities/GPLogger.as
r1458 r1472 9 9 import flash.utils.ByteArray; 10 10 11 import org.libspark.gunyarapaint.controls.GPCanvas;12 13 11 import mx.controls.Alert; 14 12 import mx.utils.Base64Decoder; 15 13 import mx.utils.Base64Encoder; 14 15 import org.libspark.gunyarapaint.controls.GPCanvas; 16 16 17 17 public class GPLogger … … 76 76 } 77 77 78 public function createViewerCanvas(baseImg:BitmapData ):GPCanvas {78 public function createViewerCanvas(baseImg:BitmapData, baseInfo:Object):GPCanvas { 79 79 resetPosition(); 80 var canvas:GPCanvas = new GPCanvas(width, height, undoBufferSize, this, baseImg, null);80 var canvas:GPCanvas = new GPCanvas(width, height, undoBufferSize, this, baseImg, baseInfo, null); 81 81 return canvas; 82 82 } as3/gunyarapaint/trunk/nicopedia/org/libspark/nicopedia/Com.as
r1458 r1472 1 1 package org.libspark.nicopedia 2 2 { 3 import com.adobe.serialization.json.JSON; 4 3 5 import flash.display.DisplayObject; 4 import com.adobe.serialization.json.JSON;6 5 7 import mx.core.UIComponent; 6 8 … … 23 25 private const ALERT_TITLE:String = 'ニコニコ大百科伝言班'; 24 26 25 private var postUrl:String;26 private var cookie:String;27 private var magic:String;28 27 private var callback:Function; 29 28 … … 36 35 } 37 36 38 public function setPostEnv(postUrl:String, cookie:String, magic:String):void {39 this.postUrl = postUrl;40 this.cookie = cookie;41 this.magic = magic;42 }43 44 37 // jasrac_idsはスペース区切りで 45 public function postPico( name:String, title:String, msg:String, mml:String, ref_mml_id:uint, jasrac_ids:String):void {38 public function postPico(url:String, magic:String, cookie:String, name:String, title:String, msg:String, mml:String, ref_mml_id:uint, jasrac_ids:String, callback:Function):void { 46 39 var r:URLRequest = new URLRequest(); 47 40 var v:URLVariables = new URLVariables(); 48 r.url = postUrl;41 r.url = url; 49 42 r.method = URLRequestMethod.POST; 50 43 r.data = v; … … 58 51 v.cookie = cookie; 59 52 53 this.callback = callback; 60 54 post(r); 61 55 } … … 90 84 } 91 85 92 public function postOekaki( name:String, msg:String, ref_oekaki_id:uint, data:Object):void {86 public function postOekaki(url:String, magic:String, cookie:String, name:String, msg:String, ref_oekaki_id:uint, data:Object, callback:Function):void { 93 87 var r:URLRequest = new URLRequest(); 94 88 var v:URLVariables = new URLVariables(); 95 89 var b:ByteArray = new ByteArray(); 90 var info:String = JSON.encode(data['info']); 96 91 v.cookie = cookie; 97 92 v.magic = magic; … … 108 103 b.writeUTFBytes('&IMAGE_LAYERS:' + data['layers_image'].length + '='); 109 104 b.writeBytes(data['layers_image']); 110 v.info = JSON.encode(data['info']); 111 r.url = postUrl; 105 b.writeUTFBytes('&IMAGE_INFO:' + info.length + '='); 106 b.writeUTFBytes(info); 107 r.url = url; 112 108 r.method = URLRequestMethod.POST; 113 109 r.contentType = 'application/x-nicopedia-oekaki'; 114 110 r.data = b; 115 111 112 this.callback = callback; 116 113 post(r); 117 114 } … … 184 181 return loader.content; 185 182 } 183 public function get jsonObject():Object { 184 return JSON.decode(urlLoader.data); 185 } 186 186 public function get errStr():String { 187 187 return errorStr; as3/gunyarapaint/trunk/picokakiko/src/picokakiko.as
r1403 r1472 21 21 } 22 22 if (parameters['postUrl'] && parameters['cookie'] && parameters['magic']) { 23 new Com().setPostEnv(parameters['postUrl'], parameters['cookie'], parameters['magic']);24 23 postPicoButton.enabled = true; 25 24 } … … 64 63 Alert.show(errStr, ALERT_TITLE); 65 64 postPicoButton.enabled = true; 66 } else if ( data.toString()) {67 Alert.show( data.toString(), ALERT_TITLE);65 } else if (com.data.toString()) { 66 Alert.show(com.data.toString(), ALERT_TITLE); 68 67 postPicoButton.enabled = true; 69 68 } else { … … 108 107 } 109 108 postPicoButton.enabled = false; 110 new Com().postPico(fromTextInput.text, titleTextInput.text, messageTextArea.text, mml.text, mmlId, jasracTextInput.text); 109 new Com().postPico( 110 parameters['postUrl'], 111 parameters['magic'], 112 parameters['cookie'], 113 fromTextInput.text, 114 titleTextInput.text, 115 messageTextArea.text, 116 mml.text, 117 mmlId, 118 jasracTextInput.text, 119 completePostMMLHandler); 111 120 } 112 121

