//
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// of this software and associated documentation files (the "Software"), to deal
|
// in the Software without restriction, including without limitation the rights
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
// copies of the Software, and to permit persons to whom the Software is
|
// furnished to do so, subject to the following conditions:
|
//
|
// The above copyright notice and this permission notice shall be included in all
|
// copies or substantial portions of the Software.
|
//
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
// SOFTWARE.
|
//
|
|
/**
|
* This function creating the wide screen plugin object.
|
* @param {object} pluginsman Access to the plugins manager for pptx documents.
|
* @constructor
|
* @name MakeWidescreenPlugin
|
*/
|
function MakeWidescreenPlugin(pluginsman) {
|
var funcThis = this
|
|
if (pluginsman.docType !== 'pptx' && pluginsman.docType !== 'ppsx') {
|
throw new Error(
|
'[pptx-widescreen] This plugin supporting only PowerPoint based documents.'
|
)
|
} // Endif.
|
|
this.pluginsman = pluginsman
|
this.pptxData = pluginsman.getDataStorage()
|
|
// We want to extend the main API of the pptx document object:
|
pluginsman.registerCallback('makeDocApi', function(docObj) {
|
funcThis.extendPptxApi(docObj)
|
})
|
|
return this
|
}
|
|
/**
|
* This function extending the main document object with new API methods.
|
* @param {object} docObj Document object.
|
*/
|
MakeWidescreenPlugin.prototype.extendPptxApi = function(docObj) {
|
var funcThis = this
|
|
docObj.setSlideSize = function(cx, cy, sizeType, cxSLD, cySLD) {
|
if (cx && typeof cx === 'number') {
|
funcThis.pptxData.pptWidth = cx * funcThis.pptxData.EMUS_PER_PT
|
} // Endif.
|
|
if (cy && typeof cy === 'number') {
|
funcThis.pptxData.pptHeight = cy * funcThis.pptxData.EMUS_PER_PT
|
} // Endif.
|
|
if (cySLD && typeof cxSLD === 'number') {
|
funcThis.pptxData.pptWidthSLD = cxSLD * funcThis.pptxData.EMUS_PER_PT
|
} // Endif.
|
|
if (cySLD && typeof cySLD === 'number') {
|
funcThis.pptxData.pptHeightSLD = cySLD * funcThis.pptxData.EMUS_PER_PT
|
} // Endif.
|
|
/*
|
Supported types:
|
|
'35mm'
|
'A3'
|
'A4'
|
'B4ISO'
|
'B4JIS'
|
'B5ISO'
|
'B5JIS'
|
'banner'
|
'custom'
|
'hagakiCard'
|
'ledger'
|
'letter'
|
'overhead'
|
'screen16x10'
|
'screen16x9'
|
'screen4x3'
|
*/
|
|
if (sizeType && typeof sizeType === 'string') {
|
funcThis.pptxData.pptType = sizeType
|
} // Endif.
|
}
|
|
docObj.setWidescreen = function(wide) {
|
funcThis.pptxData.pptWidth = wide
|
? 960 * funcThis.pptxData.EMUS_PER_PT
|
: funcThis.pptxData.pptWidth
|
funcThis.pptxData.pptType = wide ? 'screen16x9' : 'screen4x3'
|
}
|
}
|
|
module.exports = MakeWidescreenPlugin
|