/*
* pettanR peta.apps.js
- * version 0.5.46
+ * version 0.5.53
*
* author:
* itozyun
data = createFileData( json, LICENSE_GROUP_ARRAY, 'name,caption,url,classname' );
addChildData( FILE_DATA_LISENCE_GROUP, data );
break;
-
+
+ // Speech Balloon Templete
+ case FILE_DATA_BALLOON_ROOT :
+ case BALLOON_TEMPLETE_ARRAY :
+ json.type = FILE_TYPE.BALLOON_TEMPLETE;
+ // register pettanr.balloon
+ pettanr.newBalloon.register( json.id, json.classname, json.settings );
+ data = createFileData( json, BALLOON_TEMPLETE_ARRAY, 'name,caption,classname,settings' );
+ addChildData( FILE_DATA_BALLOON_ROOT, data );
+ break;
+
// Author
case FILE_DATA_AUTHOR_ROOT :
case AUTHOR_ARRAY :
// Panel Element
case PANEL_ELEMENT_ARRAY :
json.type = FILE_TYPE.PANEL_ELEMENT;
- data = createFileData( json, PANEL_ELEMENT_ARRAY, 'caption,url,width,height,x,y,z,t' ); // 画像の分
+ data = createFileData( json, PANEL_ELEMENT_ARRAY, 'caption,url,width,height,x,y,z,t,balloons,speeches,settings' ); // 画像の分
// 噴出しの分
// 景色の分
break;
};
};
- // パネル要素
+ // パネル要素 配列
elements = json.elements;
if( Type.isArray( elements ) === true ){
for( i = 0, l = elements.length; i<l; ++i ){
addChildData( data, getResource( PANEL_ELEMENT_ARRAY, elements[ i ] ) );
};
};
+ //パネル要素,吹き出し
+ if( json.speech_balloon_template_id ){
+ data.balloon_template = getResource( BALLOON_TEMPLETE_ARRAY, json.speech_balloon_template_id );
+ };
// Artist
if( json.artist || json.artist_id ){
return [ data.name, '先生' ].join( '' );
case FILE_TYPE.ARTIST :
return [ data.name, '画伯' ].join( '' );
+ case FILE_TYPE.BALLOON_TEMPLETE :
+ return [ data.id, data.caption ].join( ':' );
case FILE_TYPE.FOLDER :
};
return data.name;
return { className: 'file-type-author' };
case FILE_TYPE.ARTIST :
return { className: 'file-type-artist' };
+ case FILE_TYPE.BALLOON_TEMPLETE :
+ return { className: 'file-type-balloon' };
case FILE_TYPE.FOLDER :
return { className: 'file-type-folder' };
};
case FILE_TYPE.RESOURCE_PICTURE :
data = data.picture;
case FILE_TYPE.PICTURE :
- return '実素材情報 revision:' + data.revision + ' ' + data.credit + ' ' + data.settings;
+ return '実素材情報 revision: ' + data.revision + ' credit: ' + data.credit;// + ' ' + data.settings;
case FILE_TYPE.ORIGINAL_PICTURE :
return [ '原画情報 ', data.width, 'x', data.height, ', filesize:', data.filesize, ' md5', data.md5 ].join( '' );
case FILE_TYPE.COMIC :
return 'author id:' + data.id;
case FILE_TYPE.ARTIST :
return [ 'artist id:', data.id, ' Email:', data.email || 'empty' , ', HP:', data.homepage_url || 'empty' ].join( '' );
+ case FILE_TYPE.BALLOON_TEMPLETE :
+ return data.name;// + ', ' + data.settings;
case FILE_TYPE.FOLDER :
return 'pettanR folder';
};
STORY : FileAPI.createFileTypeID(),
PANEL : FileAPI.createFileTypeID(),
PANEL_ELEMENT : FileAPI.createFileTypeID(),
- BALLOON : FileAPI.createFileTypeID(),
+ BALLOON : FileAPI.createFileTypeID(),
+ BALLOON_TEMPLETE : FileAPI.createFileTypeID(),
ORIGINAL_PICTURE : FileAPI.createFileTypeID(),
RESOURCE_PICTURE : FileAPI.createFileTypeID(),
PICTURE : FileAPI.createFileTypeID(),
AUTHOR : FileAPI.createFileTypeID(),
ARTIST : FileAPI.createFileTypeID(),
LICENSE : FileAPI.createFileTypeID(),
- LICENSE_GROUP : FileAPI.createFileTypeID()
+ LICENSE_GROUP : FileAPI.createFileTypeID(),
}
),
AUTHOR_ARRAY = [],
children: []
},
FILE_DATA_BALLOON_ROOT = {
- name: 'Balloon templetes',
+ name: 'Balloon Templetes',
type: FILE_TYPE.FOLDER,
- children: []
+ children: [],
+ driver: Driver,
+ json: pettanr.CONST.SPEECH_BALOON_TEMPLETE
};
FILE_DATA_SERVICE_ROOT.children.push( FILE_DATA_COMICS_ROOT, FILE_DATA_RESOURCE_PICTURES_ROOT, FILE_DATA_ORIGINAL_PICTURES_ROOT, FILE_DATA_LISENCE_ROOT, FILE_DATA_BALLOON_ROOT );
FILE_DATA_COMICS_ROOT.children.push( FILE_DATA_MY_COMICS_ROOT, FILE_DATA_LATEST_COMICS, FILE_DATA_AUTHOR_ROOT, FILE_DATA_STORY_ROOT, FILE_DATA_PANELS_ROOT );
FILE_DATA_ORIGINAL_PICTURES_ROOT.children.push( FILE_DATA_MY_ORIGINAL_PICTURES_ROOT );
FileAPI.createFolderUnderRoot( FILE_DATA_SERVICE_ROOT );
+
+ // Balloon Templete の取得
+ // Reader, Editor で必要
+ (function( tree ){
+ tree.getRootFile().getSeqentialFiles();
+ })( FileAPI.createTree( FILE_DATA_BALLOON_ROOT ) );
+
Driver.isPettanrFileInstance = function( file ){
if( FileAPI.isFileInstance( file ) === true ){
var ELM_ITEM_CLASSNAME = 'menubar-item',
currentMenu = null,
elmBar, elmBox,
- nodeBar, nodeBox,
+ nodeBar, nodeBox, layerBox,
barH, menuW;
/** -----------------------------------------
* PrivateOptionDataClass
};
MenuClass.prototype = {
show: function(){
- data = MenuPrivateDataClass.get( this );
+ var data = MenuPrivateDataClass.get( this );
if( data.visible === true ) return;
data.elm.className = ELM_ITEM_CLASSNAME + '-focus';
},
firstOpen : function(){
var win = this.window,
- elmHead = this.elmHead = Util.getElementsByClassName( this.elm, 'window-header' )[ 0 ];
+ elmHead = this.elmHead = Util.getElementsByClassName( this.elm, 'window-header' )[ 0 ],
elmBody = this.elmBody = Util.getElementsByClassName( this.elm, 'window-body' )[ 0 ],
elmClose = Util.getElementsByClassName( this.elm, 'window-close-button' )[ 0 ],
elmFoot = Util.getElementsByClassName( this.elm, 'window-footer' )[ 0 ],
'toolbox-window', 'Tool box', 0, 215, 110, 290, true
);
})();
-
+
+/* ----------------------------------------
+ * BALLOON_TEMPLETE_EXPROLER
+ * - window
+ */
+ var BALLOON_EXPLORER_WINDOW = ( function(){
+ var tree, finder;
+
+ function onFileSelect( file ){
+ // 他の image ファイルも許可する?
+ if( Driver.isPettanrFileInstance( file ) === true ){
+ if( file.getType() === FILE_TYPE.BALLOON_TEMPLETE ){
+ PANEL_ELEMENT_CONTROL.onBalloonSelect( FileAPI.getFileData( file ) );
+ };
+ };
+ };
+
+ return WINDOWS_CONTROL.createWindow(
+ {
+ onInit: function(){},
+ onFirstOpen: function( _w, _h, nodeBody ){
+ tree = FileAPI.createTree( FILE_DATA_BALLOON_ROOT );
+ var _root = tree.getRootFile();
+ _root.getSeqentialFiles();
+
+ finder = app.createFinder(
+ nodeBody,
+ tree,
+ onFileSelect
+ );
+ finder.createPath( BALLOON_EXPLORER_WINDOW.createHeaderItem() );
+ },
+ onOpen: function( _w, _h ){
+ finder.resize( _w, _h );
+ },
+ onResize: function( _w, _h ){
+ finder.resize( _w, _h );
+ }
+ },
+ null, 'Balloon', 0, 215, 600, 350, false, true, true, 300, 300
+ );
+ })();
/* ----------------------------------------
* IMAGE_EXPROLER
{ x: 1, w: -1, y: 0, h: 1}, //bottom-left
{ x: 0, w: 1, y: 0, h: 1} //bottom-right
],
- startX, startY, startW, startH, startFilpV, startFilpH, startAspect,
+ startX, startY, startW, startH,
+ flipV, flipH, startFilpV, startFilpH, startAspect,
baseX, baseY, baseW, baseH,
currentX, currentY, currentW, currentH,
offsetX, offsetY,
pushoutH = 0,
pushout = false,
currentType = -1,
+ currentElement = null,
visible = false,
node = null,
- ui, inputX, inputY, inputZ, inputA, inputW, inputH, inputAspectRatio,
+ ui, inputX, inputY, inputZ, inputA, inputW, inputH, inputPercentW, inputPercentH, inputAspectRatio,
buttonBack, buttonForward, buttonDel, buttonEdit, butonChange;
function layerBack(){
this.$ = jqImageElementOrigin.clone( true );
this.data = data;
this.z = data.z;
- this.timing = data.t || PANEL_ELEMENT_ARRAY.length + 1;
+ this.timing = data.t || PANEL_ELEMENT_ARRAY.length;
this.keepSize = false;
this.flipV = data.height < 0 ? -1 : 1;
this.flipH = data.width < 0 ? -1 : 1;
/* --------------------------------------------------------------------------------------------
* TextElementClass
*
- * type
- * 0.none
- * 1.speach balloon
- * 2.think
- * 3.bom
- * 4.black-box( dq style)
- * 5.blue-box( ff style)
- *
*/
var jqTextElementOrigin;
var TextElementClass = function( data ){
this.$ = jqTextElementOrigin.clone( true );
this.data = data;
this.elmText = this.$.find( 'td,.speach-inner' ).get( 0 );
- this.type = data.balloon_template_id;
- this.content = ( function(){
- var _speachs = data.speeches_attributes;
- for( var k in _speachs ){
- return _speachs[ k ].content || '';
- }
- return '';
- })();
- this.balloon = pettanr.balloon.createBalloon( data.width, data.height, data.tail, this.type );
+ this.type = data.balloon_template_id || data.balloon_template.id;
+ this.content = '';
+
+ var speachs = data.speeches;
+ for( var k in speachs ){
+ this.content += speachs[ k ].content || '';
+ };
+
+ var balloons = data.balloons,
+ p, balloonData;
+ if( balloons ){
+ for( p in balloons ){
+ balloonData = balloons[ p ];
+ break;
+ };
+ };
+ // this.balloon = pettanr.balloon.createBalloon( data.width, data.height, data.tail, this.type );
+ this.balloon = pettanr.newBalloon.create( this.type, balloonData.width, balloonData.height, balloonData.settings );
+ data.x = balloonData.x;
+ data.y = balloonData.y;
+ data.width = balloonData.width;
+ data.height = balloonData.height;
+
this.z = data.z;
- this.timing = data.t || PANEL_ELEMENT_ARRAY.length + 1;
+ this.timing = data.t || PANEL_ELEMENT_ARRAY.length;
this.$.find( 'img' ).eq( 0 ).replaceWith( this.balloon.elm );
this.resize( this.data.x, this.data.y, this.data.width, this.data.height, this.data.tail );
this.init = null;
},
+ /*
_updateType : function( _type ){
if( this.type !== _type ){
this.type = _type || this.type;
this.balloon.type( this.type );
};
- },
+ }, */
_updateAngle : function( _a ){
if( _a !== undefined && a !== _a ){
this.a = _a !== undefined ? _a : this.a;
- this.balloon.angle( this.a );
+ //this.balloon.angle( this.a );
+ this.balloon.update( this.w, this.h, this.a );
};
},
/* history */
this.elmText.firstChild.data = this.content;
},
_resizeBalloon : function(){
- this.balloon && this.balloon.resize( this.a, this.w, this.h );
+ //this.balloon && this.balloon.resize( this.a, this.w, this.h );
+ this.balloon && this.balloon.update( this.w, this.h, this.a );
},
angle : function( _a ){
_a !== undefined && this.resize( this.x, this.y, this.w, this.h, _a );
x : Math.floor( panelW / 2 - data.width / 2 ),
y : Math.floor( panelH / 2 - data.height / 2 ),
z : -1,
- t : PANEL_ELEMENT_ARRAY.length + 1,
+ t : 0,
width : 1,
height : 1
});
HISTORY_CONTROL.saveState( PANEL_ELEMENT_CONTROL.restore, [ false, _panelElement ], [ true, _panelElement ], true );
},
createTextElement: function( data ){
- var _panelElement;
if( Type.isObject( data ) === false ){
+ BALLOON_EXPLORER_WINDOW.open();
+ } else {
+ PANEL_ELEMENT_CONTROL.onBalloonSelect( data );
+ };
+ },
+ onBalloonSelect : function( data ){
+ var _panelElement;
+ if( data.classname ){
data = {
- balloon_template_id:1,
- size: 1,
- tail: 90,
- x: Math.floor( panelW / 2 - 100 + Math.random() * 10 ),
- y: Math.floor( panelH / 2 - 100 + Math.random() * 10 ),
- z: -1,
- t: PANEL_ELEMENT_ARRAY.length + 1,
- width: 200,
- height: 200,
- speeches_attributes: {
- text1: {
- content: 'Hello'
+ balloon_template_id : data.id,
+ z : -1,
+ t : 0,
+ balloons : {
+ balloon1 : {
+ width : 200,
+ height : 200,
+ x : Math.floor( panelW / 2 - 100 + Math.random() * 10 ),
+ y : Math.floor( panelH / 2 - 100 + Math.random() * 10 ),
+ settings : {}
+ }
+ },
+ speeches : {
+ speech1 : {
+ content : 'Hello'
}
}
};
if( Type.isArray( panelElements ) === true ){
- for( var i=0; i<panelElements.length; ++i ){
+ for( var i = 0; i < panelElements.length; ++i ){
panelElm = panelElements[ i ];
+ if( panelElm.balloons ){
+ PANEL_ELEMENT_CONTROL.createTextElement( panelElm );
+ } else
if( panelElm.picture ){
PANEL_ELEMENT_CONTROL.createImageElement( panelElm );
- } else
- if( panelElm.balloon_template_id ){
- PANEL_ELEMENT_CONTROL.createTextElement( panelElm );
};
};
};
'}'
].join( '');
};
- function imageToJson( _imageElement, _timing ){
+ function imageToJson( _imageElement, t ){
var cr = pettanr.LINE_FEED_CODE_TEXTAREA;
return [
'{', cr,
'"x": ', _imageElement.x, ',', cr,
'"y": ', _imageElement.y, ',', cr,
'"z": ', _imageElement.z + 1, ',', cr,
- '"t": ', _timing, ',', cr,
+ '"t": ', t, ',', cr,
'"width": ', _imageElement.flipH * _imageElement.w, ',', cr,
'"height": ', _imageElement.flipV * _imageElement.h, cr,
'}'
].join( '');
};
- function balloonToJson( _textElement, _timing ){
+ function balloonToJson( _textElement, t ){
var cr = pettanr.LINE_FEED_CODE_TEXTAREA;
return [
'{', cr,
- '"balloon_template_id": ', 1, ',', cr,
- '"system_picture_id": ', 1, ',', cr,
- '"size": ', 1, ',', cr,
- '"tail": ', _textElement.a, ',', cr,
- '"x": ', _textElement.x, ',', cr,
- '"y": ', _textElement.y, ',', cr,
- '"z": ', _textElement.z + 1, ',', cr,
- '"t": ', timing, ',', cr,
- '"width": ', _textElement.w, ',', cr,
- '"height": ', _textElement.h, ',', cr,
- '"speeches_attributes": {', cr,
- '"newf', timing, '": {', cr,
- '"content": "', _textElement.content, '",', cr,
+ '"speech_balloon_template_id": ', _textElement.type, ',', cr,
+ '"classname": "Square",',
+ '"z": ', _textElement.z + 1, ',', cr,
+ '"t": ', t, ',', cr,
+ '"settings": "{\'tail\':' + _textElement.a + '}",',
+ '"balloons_attributes": {', cr,
+ '"newb', t, '": {', cr,
+ '"system_picture_id": ', _textElement.balloon.src, ',', cr,
+ '"caption": "alt text",', cr,
'"x": ', _textElement.x, ',', cr,
'"y": ', _textElement.y, ',', cr,
- '"t": ', timing, ',', cr,
'"width": ', _textElement.w, ',', cr,
'"height": ', _textElement.h, cr,
'}', cr,
+ '},', cr,
+ '"speeches_attributes": {', cr,
+ '"news', t, '": {', cr,
+ '"content": "', _textElement.content, '",', cr,
+ '"x": ', Math.floor( _textElement.w * 0.16 ), ',', cr,
+ '"y": ', Math.floor( _textElement.w * 0.16 ), ',', cr,
+ '"width": ', Math.floor( _textElement.w * 0.66 ), ',', cr,
+ '"height": ', Math.floor( _textElement.h * 0.66 ), cr,
+ '}', cr,
'}', cr,
'}'
].join( '');
comboboxFormat, inputOption,
buttonSubmit, buttonClose,
windowW, windowH,
- timing = 0,
comicID, panelID, panelTimming, panelW, panelH, borderSize, panelElementArray,
app = this,
model = null;
this.onClose = function(){
elmOutputArea.value = '';
model.destroy();
- elmOutputArea = comboboxFormat = inputOption = buttonSubmit = buttonClose = panelElementArray = instance = model = null;
+ elmOutputArea = comboboxFormat = inputOption = buttonSubmit = buttonClose = panelElementArray = model = null;
};
}, true, false, 'Output Console', 'outputConsole', null, '#2D89F0' );