Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
a6eb0043
Kaydet (Commit)
a6eb0043
authored
Agu 26, 2012
tarafından
Marco Cecchetti
Kaydeden (comit)
Thorsten Behrens
Eki 10, 2012
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Bug Fix: background objects on master pages were not stacked in the correct order
üst
3bf528b4
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
144 additions
and
60 deletions
+144
-60
presentation_engine.js
filter/source/svg/presentation_engine.js
+144
-60
No files found.
filter/source/svg/presentation_engine.js
Dosyayı görüntüle @
a6eb0043
...
@@ -1606,6 +1606,34 @@ function getClassAttribute( aElem )
...
@@ -1606,6 +1606,34 @@ function getClassAttribute( aElem )
return '';
return '';
}
}
function createElementGroup( aParentElement, aElementList, nFrom, nCount, sGroupClass, sGroupId )
{
var nTo = nFrom + nCount;
if( nCount < 1 || aElementList.length < nTo )
{
log( 'createElementGroup: not enough elements available.' );
return;
}
var firstElement = aElementList[nFrom];
if( !firstElement )
{
log( 'createElementGroup: element not found.' );
return;
}
var aGroupElement = document.createElementNS( NSS['svg'], 'g' );
if( sGroupId )
aGroupElement.setAttribute( 'id', sGroupId );
if( sGroupClass )
aGroupElement.setAttribute( 'class', sGroupClass );
aParentElement.insertBefore( aGroupElement, firstElement );
var i = nFrom;
for( ; i < nTo; ++i )
{
aParentElement.removeChild( aElementList[i] );
aGroupElement.appendChild( aElementList[i] );
}
}
function initVisibilityProperty( aElement )
function initVisibilityProperty( aElement )
{
{
var nVisibility = VISIBLE;
var nVisibility = VISIBLE;
...
@@ -2213,6 +2241,47 @@ function MasterPage( sMasterPageId )
...
@@ -2213,6 +2241,47 @@ function MasterPage( sMasterPageId )
{
{
this.backgroundObjectsId = this.backgroundObjects.getAttribute( 'id' );
this.backgroundObjectsId = this.backgroundObjects.getAttribute( 'id' );
this.backgroundObjectsVisibility = initVisibilityProperty( this.backgroundObjects );
this.backgroundObjectsVisibility = initVisibilityProperty( this.backgroundObjects );
if( this.backgroundObjectsVisibility != HIDDEN )
{
var aBackgroundObjectList = getElementChildren( this.backgroundObjects );
var nFrom = 0;
var nCount = 0;
var nSubGroupId = 1;
var sClass;
var sId = '';
this.aBackgroundObjectSubGroupIdList = new Array();
var i = 0;
for( ; i < aBackgroundObjectList.length; ++i )
{
sClass = aBackgroundObjectList[i].getAttribute( 'class' );
if( !sClass || ( ( sClass !== aDateTimeClassName ) && ( sClass !== aFooterClassName )
&& ( sClass !== aHeaderClassName ) && ( sClass !== aSlideNumberClassName ) ) )
{
if( nCount === 0 )
{
nFrom = i;
sId = this.backgroundObjectsId + '.' + nSubGroupId;
++nSubGroupId;
this.aBackgroundObjectSubGroupIdList.push( sId );
}
++nCount;
}
else
{
this.aBackgroundObjectSubGroupIdList.push( sClass );
if( nCount !== 0 )
{
createElementGroup( this.backgroundObjects, aBackgroundObjectList, nFrom, nCount, 'BackgroundObjectSubgroup', sId );
nCount = 0;
}
}
}
if( nCount !== 0 )
{
createElementGroup( this.backgroundObjects, aBackgroundObjectList, nFrom, nCount, 'BackgroundObjectSubgroup', sId );
}
}
}
}
else
else
{
{
...
@@ -2355,15 +2424,14 @@ PlaceholderShape.prototype.init = function()
...
@@ -2355,15 +2424,14 @@ PlaceholderShape.prototype.init = function()
* <g class='MasterPageView'>
* <g class='MasterPageView'>
* <use class='Background'> // reference to master page background element
* <use class='Background'> // reference to master page background element
* <g class='BackgroundObjects'>
* <g class='BackgroundObjects'>
* <
g class='BackgroundFields'>
* <
use class='BackgroundObjectSubGroup'> // reference to the group of shapes on the master page that are below text fields
*
<g class='Slide_Number'>
// a cloned element
*
<g class='Slide_Number'>
// a cloned element
* ...
* ...
* </g>
* <use class='Date/Time'> // reference to a clone
* <use class='Footer'>
* <use class='Header'>
* </g>
* </g>
* <use class='BackgroundShapes'> // reference to the group of shapes on the master page
* <use class='Date/Time'> // reference to a clone
* <use class='Footer'>
* <use class='Header'>
* <use class='BackgroundObjectSubGroup'> // reference to the group of shapes on the master page that are above text fields
* </g>
* </g>
* </g>
* </g>
*
*
...
@@ -2458,11 +2526,9 @@ MasterPageView.prototype.createElement = function()
...
@@ -2458,11 +2526,9 @@ MasterPageView.prototype.createElement = function()
this.aBackgroundObjectsElement = theDocument.createElementNS( NSS['svg'], 'g' );
this.aBackgroundObjectsElement = theDocument.createElementNS( NSS['svg'], 'g' );
this.aBackgroundObjectsElement.setAttribute( 'class', 'BackgroundObjects' );
this.aBackgroundObjectsElement.setAttribute( 'class', 'BackgroundObjects' );
// create background fields group
this
.
aBackgroundFieldsElement
=
theDocument
.
createElementNS
(
NSS
[
'svg'
],
'g'
);
this
.
aBackgroundFieldsElement
.
setAttribute
(
'class'
,
'BackgroundFields'
);
// clone and initialize text field elements
// clone and initialize text field elements
var aBackgroundObjectSubGroupIdList = this.aMasterPage.aBackgroundObjectSubGroupIdList;
this.aBackgroundSubGroupElementSet = new Array();
var aPlaceholderShapeSet = this.aMasterPage.aPlaceholderShapeSet;
var aPlaceholderShapeSet = this.aMasterPage.aPlaceholderShapeSet;
var aTextFieldContentProviderSet = this.aMetaSlide.aTextFieldContentProviderSet;
var aTextFieldContentProviderSet = this.aMetaSlide.aTextFieldContentProviderSet;
// where cloned elements are appended
// where cloned elements are appended
...
@@ -2470,58 +2536,76 @@ MasterPageView.prototype.createElement = function()
...
@@ -2470,58 +2536,76 @@ MasterPageView.prototype.createElement = function()
var aTextFieldHandlerSet = this.aMetaSlide.theMetaDoc.aTextFieldHandlerSet;
var aTextFieldHandlerSet = this.aMetaSlide.theMetaDoc.aTextFieldHandlerSet;
var sMasterSlideId = this.aMasterPage.id;
var sMasterSlideId = this.aMasterPage.id;
// Slide Number Field
var i = 0;
// The cloned element is appended directly to the field group element
var sId;
// since there is no slide number field content shared between two slide
for( ; i < aBackgroundObjectSubGroupIdList.length; ++i )
// (because the slide number of two slide is always different).
if
(
aPlaceholderShapeSet
[
aSlideNumberClassName
]
&&
aPlaceholderShapeSet
[
aSlideNumberClassName
].
isValid
()
&&
this
.
aMetaSlide
.
nIsPageNumberVisible
&&
aTextFieldContentProviderSet
[
aSlideNumberClassName
]
)
{
this
.
aSlideNumberFieldHandler
=
new
SlideNumberFieldHandler
(
aPlaceholderShapeSet
[
aSlideNumberClassName
],
aTextFieldContentProviderSet
[
aSlideNumberClassName
]
);
this
.
aSlideNumberFieldHandler
.
update
(
this
.
aMetaSlide
.
nSlideNumber
);
this
.
aSlideNumberFieldHandler
.
appendTo
(
this
.
aBackgroundFieldsElement
);
}
// Date/Time field
if
(
this
.
aMetaSlide
.
nIsDateTimeVisible
)
{
this
.
aDateTimeFieldHandler
=
this
.
initTextFieldHandler
(
aDateTimeClassName
,
aPlaceholderShapeSet
,
aTextFieldContentProviderSet
,
aDefsElement
,
aTextFieldHandlerSet
,
sMasterSlideId
);
}
// Footer Field
if
(
this
.
aMetaSlide
.
nIsFooterVisible
)
{
{
this
.
aFooterFieldHandler
=
sId = aBackgroundObjectSubGroupIdList[i];
this
.
initTextFieldHandler
(
aFooterClassName
,
aPlaceholderShapeSet
,
if( sId === aSlideNumberClassName )
aTextFieldContentProviderSet
,
aDefsElement
,
{
aTextFieldHandlerSet
,
sMasterSlideId
);
// Slide Number Field
}
// The cloned element is appended directly to the field group element
// since there is no slide number field content shared between two slide
// (because the slide number of two slide is always different).
if( aPlaceholderShapeSet[aSlideNumberClassName] &&
aPlaceholderShapeSet[aSlideNumberClassName].isValid() &&
this.aMetaSlide.nIsPageNumberVisible &&
aTextFieldContentProviderSet[aSlideNumberClassName] )
{
this.aSlideNumberFieldHandler =
new SlideNumberFieldHandler( aPlaceholderShapeSet[aSlideNumberClassName],
aTextFieldContentProviderSet[aSlideNumberClassName] );
this.aSlideNumberFieldHandler.update( this.aMetaSlide.nSlideNumber );
this.aSlideNumberFieldHandler.appendTo( this.aBackgroundObjectsElement );
}
}
else if( sId === aDateTimeClassName )
{
// Date/Time field
if( this.aMetaSlide.nIsDateTimeVisible )
{
this.aDateTimeFieldHandler =
this.initTextFieldHandler( aDateTimeClassName, aPlaceholderShapeSet,
aTextFieldContentProviderSet, aDefsElement,
aTextFieldHandlerSet, sMasterSlideId );
}
}
else if( sId === aFooterClassName )
{
// Footer Field
if( this.aMetaSlide.nIsFooterVisible )
{
this.aFooterFieldHandler =
this.initTextFieldHandler( aFooterClassName, aPlaceholderShapeSet,
aTextFieldContentProviderSet, aDefsElement,
aTextFieldHandlerSet, sMasterSlideId );
}
}
else if( sId === aHeaderClassName )
{
// Header Field
if( this.aMetaSlide.nIsHeaderVisible )
{
this.aHeaderFieldHandler =
this.initTextFieldHandler( aHeaderClassName, aPlaceholderShapeSet,
aTextFieldContentProviderSet, aDefsElement,
aTextFieldHandlerSet, sMasterSlideId );
}
}
else
{
// init BackgroundObjectSubGroup elements
var aBackgroundSubGroupElement = theDocument.createElementNS( NSS['svg'], 'use' );
aBackgroundSubGroupElement.setAttribute( 'class', 'BackgroundObjectSubGroup' );
setNSAttribute( 'xlink', aBackgroundSubGroupElement,
'href', '#' + sId );
this.aBackgroundSubGroupElementSet.push( aBackgroundSubGroupElement );
// node linking
this.aBackgroundObjectsElement.appendChild( aBackgroundSubGroupElement );
}
// Header Field
if
(
this
.
aMetaSlide
.
nIsHeaderVisible
)
{
this
.
aHeaderFieldHandler
=
this
.
initTextFieldHandler
(
aHeaderClassName
,
aPlaceholderShapeSet
,
aTextFieldContentProviderSet
,
aDefsElement
,
aTextFieldHandlerSet
,
sMasterSlideId
);
}
}
// init BackgroundShapes element
this
.
aBackgroundShapesElement
=
theDocument
.
createElementNS
(
NSS
[
'svg'
],
'use'
);
this
.
aBackgroundShapesElement
.
setAttribute
(
'class'
,
'BackgroundShapes'
);
setNSAttribute
(
'xlink'
,
this
.
aBackgroundShapesElement
,
'href'
,
'#'
+
this
.
aMasterPage
.
backgroundObjectsId
);
// node linking
// node linking
this
.
aBackgroundObjectsElement
.
appendChild
(
this
.
aBackgroundFieldsElement
);
this
.
aBackgroundObjectsElement
.
appendChild
(
this
.
aBackgroundShapesElement
);
aMasterPageViewElement.appendChild( this.aBackgroundObjectsElement );
aMasterPageViewElement.appendChild( this.aBackgroundObjectsElement );
}
}
...
@@ -2561,7 +2645,7 @@ function( sClassName, aPlaceholderShapeSet, aTextFieldContentProviderSet,
...
@@ -2561,7 +2645,7 @@ function( sClassName, aPlaceholderShapeSet, aTextFieldContentProviderSet,
setNSAttribute( 'xlink', aTextFieldElement,
setNSAttribute( 'xlink', aTextFieldElement,
'href', '#' + aTextFieldHandler.sId );
'href', '#' + aTextFieldHandler.sId );
// node linking
// node linking
this
.
aBackground
Field
sElement
.
appendChild
(
aTextFieldElement
);
this.aBackground
Object
sElement.appendChild( aTextFieldElement );
}
}
return aTextFieldHandler;
return aTextFieldHandler;
};
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment