* \r
*/\r
\r
+/*\r
+ * if (!document.namespaces["v"]) { // VMLネームスペースが定義されていないなら\r
+ // ネームスペース(v) をVMLとして認識させる\r
+ document.namespaces.add("v", "urn:schemas-microsoft-com:vml", "#default#VML");\r
+ }\r
+ // スタイルシートを生成し、<v:rect> と <v:fill> をVMLとして紐付ける\r
+ document.createStyleSheet().cssText = "v\:rect,v\:fill{behavior:url(#default#VML);";\r
+\r
+ */\r
+\r
var h2c = ( function(){\r
var FUNCTION_ARRAY = [],\r
URL = document.location.href.split( '#')[ 0],\r
document.body.appendChild( ret);\r
return ret;\r
})(),\r
- CLEAN_TARGET_ELEMENT = 'script,style,object,applet,embed,iframe,frame'.split( ',');\r
+ CLEAN_TARGET_ELEMENT = 'script,style,object,applet,embed,iframe,frame,base,bgsound,frameset,listing'.split( ',');\r
return {\r
extend: function( baseInstance, extend){\r
for( var key in extend){\r
}\r
}\r
}\r
+ if( h2c.isIE === false) return;\r
+ elms = document.getElementsByName( '*');\r
+ l = elms.length;\r
+ for(i=0; i<l; ++i){\r
+ elm = elms[ i];\r
+ elm.style.filter = '';\r
+ elm.style.behavior = '';\r
+ }\r
},\r
getElementSize: function( _elm){\r
if( !_elm){\r
key = e.keyCode,\r
overlayEnabled = h2c.overlay.visible === true,\r
currentViewID = overlayEnabled === true ? h2c.overlay.currentID : h2c.view.currentID;\r
- if( callback === 'keydown' && EDITABLE_TEXT_CONTROL.keyEventRellay( e) === false){\r
- \r
+ if( callback === 'keyup' || EDITABLE_TEXT_CONTROL.keyEventRellay( e) === false){\r
var shift = e.shiftKey,\r
ctrl = e.ctrlKey,\r
l = KEYEVENT_ARRAY.length,\r
d;\r
\r
- shiftEnabled = e.shiftKey;\r
- ctrlEnabled = e.ctrlKey; \r
+ shiftEnabled = callback !== 'keyup' ?\r
+ e.shiftKey :\r
+ key !== 16 ? shiftEnabled : false;\r
+ ctrlEnabled = callback !== 'keyup' ?\r
+ e.ctrlKey :\r
+ key !== 17 ? ctrlEnabled : false;; \r
\r
for( var i=0; i<l; i++){\r
d = KEYEVENT_ARRAY[ i];\r
( d.ctrl === undefined || d.ctrl === ctrl)\r
){\r
( function( func, e){\r
- setTimeout( function(){ func( e)}, 0);\r
- })( d[callback], e)\r
+ func && setTimeout( function(){\r
+ func( e);\r
+ func = e = null;\r
+ }, 0);\r
+ })( d[callback], e);\r
cancel = true;\r
}\r
}\r
return null;\r
}\r
})(),\r
- vectorEnabled = ELM_BALLOON_ORIGIN !== null;\r
+ NUM_BALLOON_IMAGE = 24,\r
+ vectorEnabled = ELM_BALLOON_ORIGIN !== null && h2c.URL_PARAMS.vector !== false;\r
\r
var XBROWSER_BALLOON_CLASS = function( w, h, a){\r
var balloonElm = vectorEnabled === true ? ELM_BALLOON_ORIGIN.cloneNode( true) : document.createElement( 'IMG'), // h2c.imageに変更\r
}\r
\r
function balloonUrlBuilder( _a){\r
- return 'url'//\r
+ var d = 360 /NUM_BALLOON_IMAGE;\r
+ _a += 90 +d /2;\r
+ return [ 'balloon\/_w', _a < 360 -d /2 ? Math.floor( _a /d) : 0, '.gif'].join( '');\r
}\r
return {\r
elm: balloonElm,\r
resize: draw,\r
angle: function( _a){\r
- if( _a && _a !== a){\r
- draw( _a);\r
- }\r
+ _a !== undefined && _a !== a &&\r
+ vectorEnabled === false ? balloonUrlBuilder( _a) : draw( _a);\r
+ return a;\r
},\r
type: function( _type){\r
//draw( _a);\r
},\r
+ getURL: function(){\r
+ return balloonUrlBuilder( a);\r
+ },\r
destroy: function(){\r
- balloonElm.parentNode.removeChild( balloonElm);\r
+ balloonElm.parentNode && balloonElm.parentNode.removeChild( balloonElm);\r
balloonElm = null;\r
delete this.destroy;\r
}\r
\r
vectorEnabled === true && ( function(){\r
var detect = XBROWSER_BALLOON_CLASS.apply( {}, [ 100, 100, 0]),\r
- size = h2c.util.getElementSize( detect.elm);\r
+ size = h2c.util.getElementSize( detect.elm.firstChild ? detect.elm.firstChild : detect.elm);\r
vectorEnabled = size.width !== 0 && size.height !== 0;\r
detect.destroy();\r
detect = size = null; \r
h2c.util.loadImage( url, onLoad, onError, 100, 10000);\r
function onLoad( _url, _actualW, _actualH){\r
if( elmWrap === null) return;\r
- elmImg = new Image;\r
- elmImg.src = url;\r
+ elmImg = document.createElement( 'IMG');\r
elmWrap.appendChild( elmImg); // load後にimg\r
+ elmImg.src = url;\r
elmWrap.className = CLASS_NAME;\r
onLoadCallback && onLoadCallback( _url, _actualW, _actualH);\r
onLoadCallback = null;\r
* a\r
* span\r
* kbd shortcut\r
- * li.separator\r
*/\r
var MENU_BAR_CONTROL = ( function(){\r
var BAR_ID = 'menu-bar',\r
}\r
}\r
\r
- var MenuBarItemClass = function( title){\r
+ var MenuBarItemClass = function( title, opt_callbackArray){\r
var ELM_WRAPPER = ELM_ITEM_ORIGN.cloneNode( true),\r
ELM_TITLE = ELM_WRAPPER.getElementsByTagName( 'DIV')[ 0],\r
ELM_SELECTION = ELM_WRAPPER.getElementsByTagName( 'UL')[ 0],\r
INDEX = ITEM_ARRAY.length,\r
- SELECTION_CALLBACK_ARRAY = [],\r
+ SELECTION_CALLBACK_ARRAY = opt_callbackArray || [],\r
numSelection = 0,\r
visible = false;\r
ELM_TITLE.innerHTML = title;\r
return false; \r
}\r
return {\r
+ elm: ELM_WRAPPER,\r
+ onClick: onClick,\r
init: function(){\r
$( ELM_SELECTION).children( 'li').click( onClick);\r
delete this.init;\r
ret.elm.style.borderTop = '1px solid #ccc';\r
}\r
return ret;\r
- },\r
- createAjaxSelection: function(){\r
- var elmLoading = document.createElement( 'li');\r
- elmLoading.className = 'loading';\r
- elmLoading.style.height = '90px';\r
- ELM_SELECTION.appendChild( elmLoading);\r
- \r
- delete this.createAjaxSelection;\r
- return function(){\r
- SELECTION_CALLBACK_ARRAY.shift();\r
- ELM_SELECTION.removeChild( elmLoading);\r
- elmLoading = null;\r
- $( ELM_SELECTION).children( 'li').click( onClick);\r
- }\r
}\r
}\r
}\r
QUIT: createMenubarItem( 'Quit'),\r
EDIT: createMenubarItem( 'Edit'),\r
WINDOW: createMenubarItem( 'Window'),\r
- HELP: h2c.util.extend( createMenubarItem( 'Help'), {\r
- \r
- }) // extend, onShow, ajaxselection, HELP_DOCUMENTS_CONTROL.load()\r
+ HELP: ( function(){\r
+ var SELECTION_CALLBACK_ARRAY = [];\r
+ return h2c.util.extend( createMenubarItem( 'Help', SELECTION_CALLBACK_ARRAY), {\r
+ createAjaxSelection: function( callback){\r
+ var elmLoading = document.createElement( 'li'),\r
+ that = this,\r
+ elmSelection = this.elm.getElementsByTagName( 'UL')[ 0];\r
+ elmSelection.appendChild( elmLoading);\r
+ elmLoading.className = 'loading';\r
+ elmLoading.style.height = '90px'; \r
+ \r
+ //SELECTION_CALLBACK_ARRAY.push( callback);\r
+ this.onShow = callback;\r
+ callback = null;\r
+ \r
+ delete this.createAjaxSelection;\r
+ return function(){\r
+ //SELECTION_CALLBACK_ARRAY.shift();\r
+ elmSelection.removeChild( elmLoading);\r
+ $( elmSelection).children( 'li').click( that.onClick);\r
+ elmLoading = elmSelection = null;\r
+ delete that.onShow;\r
+ that = null;\r
+ }\r
+ }\r
+ });\r
+ })()\r
}\r
})();\r
\r
var state = STACK_BACK.pop();\r
state && state.fn( state.argBack);\r
MENUBAR_BACK.visible( STACK_BACK.length !== 0);\r
+ SAVE_CONTROL.panelUpdated( STACK_BACK.length !== 0);\r
\r
STACK_FORWARD.push( state);\r
MENUBAR_FORWARD.visible( true);\r
\r
STACK_BACK.push( state);\r
MENUBAR_BACK.visible( true);\r
+ SAVE_CONTROL.panelUpdated( true);\r
}\r
return {\r
init: function(){\r
destroy: _destroy\r
});\r
MENUBAR_BACK.visible( true);\r
+ SAVE_CONTROL.panelUpdated( true);\r
\r
while( STACK_FORWARD.length > 0){\r
_argBack = _stack.argBack;\r
* * help window に help documents を挿入\r
*/\r
var HELP_DOCUMENTS_CONTROL = ( function(){\r
- var onLoadFunction = MENU_BAR_CONTROL.HELP.createAjaxSelection();\r
+ \r
return {\r
- load: function(){\r
- // HELP_DOCUMENTS_WINDOW.setAjaxContent();\r
+ load: function( titleArray){\r
var help = MENU_BAR_CONTROL.HELP;\r
//help.createSelection();\r
//onLoadFunction();\r
})();\r
\r
/* ----------------------------------------\r
+ * Save Control\r
+ */\r
+\r
+ var SAVE_CONTROL = ( function(){\r
+ var SAVE = MENU_BAR_CONTROL.QUIT.createSelection( 'save', 'ctrl + S', quit, false),\r
+ SAVE_AND_QUIT = MENU_BAR_CONTROL.QUIT.createSelection( 'save & quit', null, quit, false, false, true),\r
+ SAVE_AS_HTML = MENU_BAR_CONTROL.QUIT.createSelection( 'get as html', null, outputAsHtml, true, false, true),\r
+ QUIT = MENU_BAR_CONTROL.QUIT.createSelection( 'quit', null, quit, true, true),\r
+ updated = false;\r
+ \r
+ function quit(){\r
+ }\r
+ \r
+ function outputAsHtml(){\r
+ alert( CANVAS_CONTROL.getAsHTML( true, false));\r
+ }\r
+ \r
+ return {\r
+ quit: quit,\r
+ panelUpdated: function( _updated){\r
+ if( _updated !== undefined && updated !== _updated){\r
+ SAVE.visible( !!_updated);\r
+ SAVE_AND_QUIT.visible( !!_updated);\r
+ updated = !!_updated;\r
+ }\r
+ return updated;\r
+ },\r
+ save: function(){\r
+ \r
+ }\r
+ }\r
+ })();\r
+\r
+/* ----------------------------------------\r
* Text Editor (Overlay)\r
*/\r
\r
}\r
\r
return {\r
- setInstance: function(){\r
- instance = this;\r
- delete this.setInstance;\r
- },\r
init: function( jqContainer){\r
+ instance = this;\r
+ \r
jqWindowOrigin = jqWindowOrigin || ( function(){\r
return $( $( '#windowTemplete').remove().html());\r
})();\r
return h2c.util.getElementSize( jqWindowOrigin.clone( true).find( '.window-close-button').get( 0)).width;\r
})();\r
\r
- \r
jqStage = jqEditor;\r
this.$ = jqWrapper = jqWindowOrigin.clone( true);\r
jqHeader = jqWrapper.children( '.window-header').eq( 0).html( title);\r
}\r
CLOSE_BUTTON_ENABLED !== true && jqWrapper.find( '.window-close-button').remove();\r
\r
- jqContainer.append( jqWrapper); // domに追加しないと、this.onInit()が正しく動かない.\r
- jqWrapper.fadeIn(); // appendした後に fadeIn() しないと ie で filterが適用されない.\r
+ this.onInit && this.onInit();\r
+ delete this.init;\r
+ },\r
+ x: function(){ return x;},\r
+ y: function(){ return y;},\r
+ w: function(){ return w;},\r
+ h: function(){ return h;},\r
+ $: null,\r
+ title: function( _title){\r
+ _title !== undefined && jqHeader.html( _title);\r
+ title = _title || title;\r
+ return title;\r
+ },\r
+ visible: visible,\r
+ firstOpen: function(){\r
+ //jqContainer.append( jqWrapper); // domに追加しないと、this.onInit()が正しく動かない.\r
+ //jqWrapper.fadeIn(); // appendした後に fadeIn() しないと ie で filterが適用されない.\r
if( RESIZE_BUTTON_ENABLED === true){\r
jqWrapper.find( '.window-resize-button').eq( 0)\r
.mousedown( function( e){\r
jqWrapper.find( '.window-resize-button').remove();\r
}\r
update( x, y, w, h);\r
- this.onInit && this.onInit();\r
- delete this.init;\r
- },\r
- x: function(){ return x;},\r
- y: function(){ return y;},\r
- w: function(){ return w;},\r
- h: function(){ return h;},\r
- $: null,\r
- title: function( _title){\r
- _title !== undefined && jqHeader.html( _title);\r
- title = _title || title;\r
- return title;\r
+ \r
+ this.onFirstOpen && this.onFirstOpen();\r
+ \r
+ delete this.firstOpen;\r
},\r
- visible: visible,\r
open: function(){\r
if( visible === true) return;\r
this.visible = visible = true;\r
- this.onOpen && setTimeout( this.onOpen, 0);\r
openWindow( this);\r
+ \r
MENUBAR_SELWCTION.title( 'hide ' +title);\r
},\r
close: function(){\r
currentWindowIndex = -1;\r
for( var i=0; i<l; i++){\r
_win = WINDOW_ARRAY[ i];\r
+ if( _win.visible !== true) continue;\r
_x = _win.x();\r
_y = _win.y();\r
if( _x <= _mouseX && _y <= _mouseY && _x +_win.w() >= _mouseX && _y +_win.h() >= _mouseY){\r
return currentWindowIndex;\r
}\r
function openWindow( _window){\r
- if( _window.visible !== true) return;\r
- WINDOW_ARRAY.unshift( _window);\r
- WINDOWS_CONTROL.init === undefined &&\r
- ( _window.init === undefined ?\r
- jqContainer.append( _window.$.stop().fadeIn()) :\r
- _window.init( jqContainer)\r
- );\r
+ if( _window.firstOpen && h2c.isIE === true && h2c.ieVersion < 9){\r
+ jqContainer.append( _window.$.stop());\r
+ _window.firstOpen();\r
+ }\r
+ _window.visible === true && jqContainer.append( _window.$.stop().fadeIn(\r
+ function(){\r
+ _window.firstOpen && _window.firstOpen();\r
+ _window.onOpen && setTimeout( _window.onOpen, 0);\r
+ }\r
+ ));\r
}\r
function closeWindow( _window){\r
var l = WINDOW_ARRAY.length;\r
for( var i=0; i<l; ++i){\r
if( WINDOW_ARRAY[ i] === _window){\r
- WINDOW_ARRAY.splice( i, 1);\r
+ //WINDOW_ARRAY.splice( i, 1);\r
_window.$.stop().fadeOut( function(){\r
this.parentNode.removeChild( this);\r
});\r
_window;\r
for( var i=l-1; i >= 0; --i){\r
_window = WINDOW_ARRAY[ i];\r
- _window.visible === true && _window.init && _window.init( jqContainer);\r
+ _window.init && _window.init( jqContainer);\r
+ _window.visible === true && openWindow( _window);\r
}\r
log = $( '#window-log');\r
\r
WindowClass.apply( scope, [ bodyTempleteID, title, x, y, w, h, opt_visible, opt_closeButtonEnabled, opt_resizeButtonEnabled, opt_minWindowW, opt_minWindowH]),\r
EXTENDS\r
);\r
- _window.setInstance();\r
- opt_visible === true && openWindow( _window);\r
+ WINDOW_ARRAY.unshift( _window);\r
+ WINDOWS_CONTROL.init === undefined && _window.init( jqContainer);\r
+ WINDOWS_CONTROL.init === undefined && openWindow( _window);\r
return _window;\r
}\r
}\r
h2c.key.addKeyDownEvent( h2c.view.EDITOR, 71, false, true, switchGrid);\r
MENU_BAR_CONTROL.EDIT.createSelection( 'show Grid', 'ctrl + G', switchGrid, true, true, true);\r
\r
- function addImage(){\r
- setTimeout( function(){ CANVAS_CONTROL.createImageElement();}, 0); \r
+ function addImage( e){\r
+ setTimeout( CANVAS_CONTROL.createImageElement, 0);\r
+ e && e.preventDefault();\r
+ return false;\r
}\r
- function addText(){\r
- setTimeout( function(){ CANVAS_CONTROL.createTextElement();}, 0); \r
+ function addText( e){\r
+ setTimeout( CANVAS_CONTROL.createTextElement, 0);\r
+ e && e.preventDefault();\r
+ return false;\r
}\r
- function switchGrid(){\r
+ function switchGrid( e){\r
setTimeout( gridSwitchFunction, 0);\r
+ e && e.preventDefault();\r
+ return false;\r
}\r
- function popupHelp(){\r
- setTimeout( function(){ HELP_DOCUMENTS_WINDOW.open();}, 0); \r
+ function popupHelp( e){\r
+ setTimeout( HELP_DOCUMENTS_WINDOW.open, 0);\r
+ e && e.preventDefault();\r
+ return false;\r
}\r
\r
return WINDOWS_CONTROL.createWindow(\r
this,\r
{\r
- onInit: function(){\r
- addImageButton = $( '#toolbox-add-image-button').click( function(e){\r
- addImage();\r
- e.preventDefault();\r
- return false;\r
- });\r
-\r
- addTextButton = $( '#toolbox-add-text-button').click( function(e){\r
- addText();\r
- e.preventDefault();\r
- return false;\r
- });\r
+ onFirstOpen: function(){\r
+ addImageButton = $( '#toolbox-add-image-button').click( addImage);\r
+ addTextButton = $( '#toolbox-add-text-button').click( addText);\r
\r
editBgButton = $( '#toolbox-edit-bg-button').click( function( e){\r
- setTimeout( function(){\r
- INFOMATION_WINDOW.open();\r
- }, 0); \r
+ setTimeout( INFOMATION_WINDOW.open, 0); \r
e.preventDefault();\r
return false;\r
});\r
\r
- switchGridButton = $( '#toolbox-switch-grid').click( function( e){\r
- switchGrid();\r
- e.preventDefault();\r
- return false;\r
- });\r
- \r
- popupHelpButton = $( '#toolbox-popup-help-button').click( function( e){\r
- popupHelp();\r
- e.preventDefault();\r
- return false;\r
- });\r
+ switchGridButton = $( '#toolbox-switch-grid').click( switchGrid);\r
+ popupHelpButton = $( '#toolbox-popup-help-button').click( popupHelp);\r
\r
publishButton = $( '#toolbox-publish-button');\r
\r
- delete this.onInit;\r
+ delete this.onFirstOpen;\r
},\r
setGridSwitchFunction: function( _gridSwitchFunction){\r
gridSwitchFunction = _gridSwitchFunction || gridSwitchFunction;\r
return WINDOWS_CONTROL.createWindow(\r
this,\r
{\r
- onInit: function(){\r
+ onFirstOpen: function(){\r
backgroundInfomationElm = $( '#panel-background-information');\r
\r
jqComicElementInformation = $( '#comic-element-infomation').hide().css( {\r
wPercentElm = CREATER( $( '#comic-element-w-percent'), null, TAB_GROUP_ID);\r
hPercentElm = CREATER( $( '#comic-element-h-percent'), null, TAB_GROUP_ID);\r
aspectElm = $( '#comic-element-keep-aspect');\r
- delete this.onInit;\r
+ delete this.onFirstOpen;\r
},\r
onResize: function( w, h){\r
jqComicElementInformation && jqComicElementInformation.css( {\r
});\r
},\r
update: function( _currentElementType, x, y, z, a, w, h, wPercent, hPercent, keepAspect){\r
+ if( this.onFirstOpen) return;\r
if( currentElementType !== _currentElementType){\r
if( _currentElementType !== -1){\r
if( _currentElementType === 1){\r
hasAjaxContents = false,\r
jqAjaxContents,\r
jqNaviItems,\r
- jqPages;\r
+ jqPages,\r
+ HELP = MENU_BAR_CONTROL.HELP,\r
+ onLoadFunction = HELP.createAjaxSelection( onFirstOpen),\r
+ instance;\r
function jumpPage( _index){\r
\r
}\r
- function onOpen( _pageIndex){\r
+ function onFirstOpen( _pageIndex){\r
_pageIndex = _pageIndex || 0;\r
if( hasAjaxContents === false){\r
$.ajax({\r
url: 'help/jp.xml',\r
dataType: 'xml',\r
success: function( xml){\r
- var elmNavi = document.createElement( 'DIV'),\r
+ var jqXML = $( xml),\r
+ helpTitle = jqXML.find( 'pages').eq( 0).attr( 'title'),\r
+ elmNavi = document.createElement( 'DIV'),\r
elmItemOrigin = document.createElement( 'A'),\r
elmPages = document.createElement( 'DIV'),\r
elmPageOrigin = document.createElement( 'DIV'),\r
elmTitleOrigin = document.createElement( 'H2'),\r
- elmPage;\r
+ elmPage,\r
+ numPage = 0;\r
elmNavi.className = 'sidenavi';\r
elmItemOrigin.className = 'sidenavi-item';\r
elmItemOrigin.href = '#';\r
elmPageOrigin.className = 'page-content';\r
elmPageOrigin.appendChild( elmTitleOrigin);\r
\r
- $( xml).find( 'page').each( function(){\r
+ // helpTitle && instance.title( helpTitle);\r
+ \r
+ jqXML.find( 'page').each( function(){\r
var xmlPage = $( this),\r
title = xmlPage.attr( 'title'),\r
content = xmlPage.text();\r
elmPage.appendChild( elmTitleOrigin.cloneNode( true));\r
}\r
elmPages.appendChild( elmPage);\r
+ \r
+ HELP.createSelection( title, null, ( function( _pageIndex){\r
+ return function(){\r
+ HELP_DOCUMENTS_WINDOW.open();\r
+ onOpen( _pageIndex); \r
+ }\r
+ })( numPage), true);\r
+ ++numPage;\r
});\r
- jqAjaxContents.append( elmNavi, elmPages);\r
+ onLoadFunction();\r
+ onLoadFunction = null;\r
+ \r
+ jqAjaxContents.removeClass( 'loading').append( elmNavi, elmPages);\r
\r
- jqNaviItems = jqAjaxContents.removeClass( 'loading')\r
- .find( 'a.' +elmItemOrigin.className)\r
+ jqNaviItems = jqAjaxContents.find( 'a.' +elmItemOrigin.className)\r
.click( function( e){\r
var that = this,\r
parent = this.parentNode,\r
}\r
});\r
hasAjaxContents = true;\r
- } else {\r
+ }\r
+ function onOpen( _pageIndex){\r
+ _pageIndex = _pageIndex || 0;\r
jqNaviItems.removeClass( 'current').eq( _pageIndex).addClass( 'current');\r
jqPages.hide().eq( _pageIndex).show();\r
}\r
this,\r
{\r
onInit: function(){\r
+ instance = this;\r
jqAjaxContents = this.$.find( '.window-body').addClass( 'loading').css( { height: this.bodyHeight()});\r
- onOpen( 0);\r
delete this.onInit;\r
},\r
+ onFirstOpen: onFirstOpen,\r
onResize: function( w, h){\r
jqAjaxContents && jqAjaxContents.css( { height: this.bodyHeight()});\r
},\r
DEG_TO_RAD = Math.PI / 180,\r
RAD_TO_DEG = 1 /DEG_TO_RAD,\r
currentText = null,\r
- x, y, w, h, a, radA;\r
+ x, y, w, h, a, radA,\r
+ visible = false;\r
\r
function draw( _w, _h, _a){\r
w = _w !== undefined ? _w : w;\r
draw( w, h,\r
_mouseX !== 0 ?\r
ATAN( _mouseY /_mouseX) *RAD_TO_DEG +( _mouseX < 0 ? 180 : 0) :\r
- _mouseY > 0 ? 0 : 180\r
+ _mouseY > 0 ? 90 : -90\r
);\r
currentText && currentText.angle( a);\r
updateInfomation( undefined, undefined, undefined, a);\r
},\r
onFinish: function(){\r
if( startA === currentElement.angle()) return;\r
- // resize( x, y, w, h, currentElement.angle());\r
saveComicElementStatus( x, y, w, h, startA);\r
},\r
onCancel: function(){\r
}\r
})(),\r
RESIZE_CONTROLER = ( function(){\r
- var RESIZE_COMMAND_ARRAY = [\r
+ var RESIZE_WORK_ARRAY = [\r
{ x: 0, w: 0, y: 1, h: -1}, //top\r
{ x: 1, w: -1, y: 0, h: 0}, //left\r
{ x: 0, w: 1, y: 0, h: 0}, //right\r
return true;\r
},\r
onDrag: function( _mouseX, _mouseY){\r
- var com = RESIZE_COMMAND_ARRAY[ currentResizerIndex],\r
+ var com = RESIZE_WORK_ARRAY[ currentResizerIndex],\r
moveX = _mouseX -xOffset,\r
moveY = _mouseY -yOffset,\r
_x = baseX +moveX *com.x,\r
[ currentElement, x, y, w, h, angle, flipV, flipH]\r
);\r
}\r
- h2c.key.addKeyUpdateEvent( h2c.view.EDITOR, 16, true, undefined, function(){\r
+ h2c.key.addKeyUpdateEvent( h2c.view.EDITOR, 16, true, undefined, function( e){\r
currentControler !== null && currentControler.onShiftUpdate && currentControler.onShiftUpdate();\r
});\r
h2c.key.addKeyUpdateEvent( h2c.view.EDITOR, 17, undefined, true, function(){\r
* // COMIC_ELEMENT_OPERATOR\r
*/\r
\r
- var AbstractComicElement = function( JQ_WAPPER, COMIC_ELM_TYPE, update, x, y, w, h, z, domIndex){\r
+ var AbstractComicElement = function( JQ_WAPPER, COMIC_ELM_TYPE, update, x, y, w, h, z, timing){\r
var OPERATOR = COMIC_ELEMENT_OPERATOR;\r
return {\r
$: JQ_WAPPER,\r
w: w,\r
h: h, \r
z: z,\r
- domIndex: domIndex,\r
+ timing: timing,\r
hitareaX: function(){ return OPERATOR.hitareaX( this, this.x);},\r
hitareaY: function(){ return OPERATOR.hitareaY( this, this.y);},\r
hitareaW: function(){ return OPERATOR.hitareaW( this, this.w);},\r
* ImageElementClass\r
*/\r
var jqImageElementOrigin;\r
- var ImageElementClass = function( url, IMAGE_SET_ID, x, y, z, w, h, domIndex){\r
+ var ImageElementClass = function( url, IMAGE_SET_ID, x, y, z, w, h, timing){\r
jqImageElementOrigin = jqImageElementOrigin || $( $( '#imgElementTemplete').remove().html());\r
\r
var JQ_WRAPPER = jqImageElementOrigin.clone( true),\r
reversibleImage = _reversibleImage;\r
}\r
return h2c.util.extend(\r
- AbstractComicElement.apply( this, [ JQ_WRAPPER, COMIC_ELEMENT_TYPE_IMAGE, update, x, y, w, h, z, domIndex]),\r
+ AbstractComicElement.apply( this, [ JQ_WRAPPER, COMIC_ELEMENT_TYPE_IMAGE, update, x, y, w, h, z, timing]),\r
{\r
init: function(){\r
instance = this;\r
flipV = _flipV !== undefined ? _flipV : flipV;\r
update( _x, _y, _w, _h, true);\r
},\r
- getAsHtml: function(){\r
- \r
+ getAsHTML: function( isAbsoluteUrl, isXHTML){\r
+ return [\r
+ '<img ',\r
+ 'src="', isAbsoluteUrl !== true ? url : h2c.util.getAbsolutePath( url), '" ',\r
+ 'width="', w, '" ',\r
+ 'height="', h, '" ',\r
+ 'style="', \r
+ 'left:', x, 'px;',\r
+ 'top:', y, 'px;',\r
+ 'z-index:', z, ';',\r
+ '"',\r
+ isXHTML !== true ? '>' : ' \/>'\r
+ ].join( '');\r
},\r
getAsJson: function(){\r
\r
* \r
*/\r
var jqTextElementOrigin;\r
- var TextElementClass = function( type, a, text, x, y, z, w, h, domIndex){\r
+ var TextElementClass = function( type, a, text, x, y, z, w, h, timing){\r
jqTextElementOrigin = jqTextElementOrigin || ( function(){\r
var _OLD_IE = $( $( '#textElementTempleteForOldIE').remove().html()),\r
_MODERN = $( $( '#textElementTemplete').remove().html());\r
}\r
\r
return h2c.util.extend(\r
- AbstractComicElement.apply( this, [ JQ_WRAPPER, COMIC_ELEMENT_TYPE_TEXT, update, x, y, w, h, z, domIndex]),\r
+ AbstractComicElement.apply( this, [ JQ_WRAPPER, COMIC_ELEMENT_TYPE_TEXT, update, x, y, w, h, z, timing]),\r
{\r
init: function(){\r
instance = this;\r
getAsJsonString: function(){\r
\r
},\r
- getAsHTML: function(){},\r
+ getAsHTML: function( isAbsoluteUrl, isXHTML){\r
+ var url = XBROWSER_BALLOON.getURL();\r
+ return [\r
+ '<img ',\r
+ 'src="', isAbsoluteUrl !== true ? url : h2c.util.getAbsolutePath( url), '" ',\r
+ 'width="', w, '" ',\r
+ 'height="', h, '" ',\r
+ 'style="', \r
+ 'left:', x, 'px;',\r
+ 'top:', y, 'px;',\r
+ 'z-index:', z, ';',\r
+ '"',\r
+ isXHTML !== true ? '>' : ' \/>',\r
+ h2c.LINE_FEED_CODE_TEXTAREA,\r
+ '<div class="balloon" style="',\r
+ 'left:', x, 'px;',\r
+ 'top:', y, 'px;',\r
+ 'width:', w, 'px;',\r
+ 'height:', h, 'px;',\r
+ 'z-index:', z,\r
+ '"><span>', text, '<\/span>', '<\/div>'\r
+ \r
+ ].join( '');\r
+ },\r
getAsXML: function(){}\r
\r
}\r
*/\r
comicElementContainer = $( '#comic-element-container');\r
\r
- appendComicElement( ImageElementClass.apply( {}, [ 'images/13.gif', 'penchan', 10, 10, 0, 100, 140]));\r
- appendComicElement( TextElementClass.apply( {}, [ 0, 270, 'Hello', 50, 70, 1, 200, 160]));\r
+ appendComicElement( ImageElementClass.apply( {}, [ 'images/13.gif', 'penchan', 10, 10, 0, 100, 140, 0]));\r
+ appendComicElement( TextElementClass.apply( {}, [ 0, 270, 'Hello', 50, 70, 1, 200, 160, 1]));\r
\r
COMIC_ELEMENT_OPERATOR.init( updateMouseCursor);\r
/*\r
x = x || Math.floor( canvasW /2 -w /2);\r
y = y || Math.floor( canvasH /2 -h /2);\r
IMAGE_GROUP_EXPROLER.show( function( _url, _w, _h){\r
- var _comicElement = ImageElementClass.apply( {}, [ _url, imagesetID, x, y, z || -1, w, h]);\r
+ var _comicElement = ImageElementClass.apply( {}, [ _url, imagesetID, x, y, z || -1, w, h, DRAGGABLE_ELEMENT_ARRAY.length -NUM_RESIZER]);\r
appendComicElement( _comicElement);\r
_comicElement.animate( undefined, undefined, _w, _h);\r
SAVE( restoreComicElement, [ false, _comicElement], [ true, _comicElement], true);\r
h = h || 150;\r
x = x || Math.floor( canvasW /2 -w /2 +Math.random() *10);\r
y = y || Math.floor( canvasH /2 -h /2 +Math.random() *10);\r
- var _comicElement = TextElementClass.apply( {}, [ type, angle, text, x, y, z || -1, w, h]);\r
+ var _comicElement = TextElementClass.apply( {}, [ type, angle, text, x, y, z || -1, w, h, DRAGGABLE_ELEMENT_ARRAY.length -NUM_RESIZER]);\r
TEXT_EDITOR_CONTROL.show( _comicElement, function( _comicElement){\r
appendComicElement( _comicElement);\r
SAVE( restoreComicElement, [ false, _comicElement], [ true, _comicElement], true);\r
});\r
+ },\r
+ getAsHTML: function( isAbsoluteUrl, isXHTML){\r
+ var HTML_CONTAINER = [],\r
+ l = DRAGGABLE_ELEMENT_ARRAY.length,\r
+ _timing = 0,\r
+ _comicElement;\r
+\r
+ while( HTML_CONTAINER.length < l -NUM_RESIZER){\r
+ _comicElement = getComicElementByTiming();\r
+ if( _comicElement === null) break;\r
+ HTML_CONTAINER.push( _comicElement.getAsHTML( isAbsoluteUrl, isXHTML));\r
+ }\r
+ function getComicElementByTiming(){\r
+ while( _timing < l *2){\r
+ for(var i=NUM_RESIZER; i<l; ++i){\r
+ if( _timing === DRAGGABLE_ELEMENT_ARRAY[ i].timing){\r
+ ++_timing;\r
+ return DRAGGABLE_ELEMENT_ARRAY[ i];\r
+ }\r
+ }\r
+ ++_timing;\r
+ }\r
+ return null;\r
+ }\r
+ HTML_CONTAINER.unshift(\r
+ [\r
+ '<div class="panel" ',\r
+ 'style="',\r
+ 'height:', canvasH, 'px;',\r
+ 'background-color:', ';',\r
+ '"',\r
+ '>'\r
+ ].join( '')\r
+ ); \r
+ HTML_CONTAINER.push( '</div>');\r
+ \r
+ return HTML_CONTAINER.join( h2c.LINE_FEED_CODE_TEXTAREA);\r
}\r
}\r
})( resize);\r
},\r
createTextElement: function( type, angle, text, x, y, w, h, z){\r
COMIC_ELEMENT_CONTROL.createTextElement( type, angle, text, x, y, w, h, z);\r
- }\r
+ },\r
+ getAsHTML: COMIC_ELEMENT_CONTROL.getAsHTML\r
}\r
})();\r
\r